Opcodes List (SCM.INI)
Last updated
Last updated
Opcodes documentation can be found in .
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 .
Game
File Name
Location
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
Lines starting with ;
are ignored.
Special INI parameters provide metadata information about the opcodes list.
VERSION
– defines the version of this file. See the 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=N, yyyy
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 %
This line is the definition of the opcode 0001
. When the disassembler finds 0001
in a script it prints the wordswait
and ms
with the parameter value in-between to the output file.
A parameter consists of two parts: a number
and a type
.
The number in parameter %1d%
is its index. The idea is that some opcodes have their parameters rearranged to make source code more readable.
The disassembler writes the 5th opcode parameter before any others.
If the parameters will follow their original order, the opcode 0053
would look like:
Changing parameters order in the INI file should be avoided by any means as it makes the source code incompatible with the default opcode definitions or earlier scripts.
A letter following the index number indicates the parameter type.
Parameters order may vary from mode to mode. See the comparison table in to find out which mode uses which type.
d
- any value
p
- a reference
o
- any id (including objects)
m
- an .ide
model id (no objects)
g
- a key from the file
x
- an external script ID
k
- a fixed-size null-terminated string literal (128 bytes)