ScummVM API documentation
enums.h
1/*
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
5 */
6
7#ifndef LINGODEC_ENUMS_H
8#define LINGODEC_ENUMS_H
9
10namespace LingoDec {
11
12enum OpCode {
13 // single-byte
14 kOpRet = 0x01,
15 kOpRetFactory = 0x02,
16 kOpPushZero = 0x03,
17 kOpMul = 0x04,
18 kOpAdd = 0x05,
19 kOpSub = 0x06,
20 kOpDiv = 0x07,
21 kOpMod = 0x08,
22 kOpInv = 0x09,
23 kOpJoinStr = 0x0a,
24 kOpJoinPadStr = 0x0b,
25 kOpLt = 0x0c,
26 kOpLtEq = 0x0d,
27 kOpNtEq = 0x0e,
28 kOpEq = 0x0f,
29 kOpGt = 0x10,
30 kOpGtEq = 0x11,
31 kOpAnd = 0x12,
32 kOpOr = 0x13,
33 kOpNot = 0x14,
34 kOpContainsStr = 0x15,
35 kOpContains0Str = 0x16,
36 kOpGetChunk = 0x17,
37 kOpHiliteChunk = 0x18,
38 kOpOntoSpr = 0x19,
39 kOpIntoSpr = 0x1a,
40 kOpGetField = 0x1b,
41 kOpStartTell = 0x1c,
42 kOpEndTell = 0x1d,
43 kOpPushList = 0x1e,
44 kOpPushPropList = 0x1f,
45 kOpSwap = 0x21,
46
47 // multi-byte
48 kOpPushInt8 = 0x41,
49 kOpPushArgListNoRet = 0x42,
50 kOpPushArgList = 0x43,
51 kOpPushCons = 0x44,
52 kOpPushSymb = 0x45,
53 kOpPushVarRef = 0x46,
54 kOpGetGlobal2 = 0x48,
55 kOpGetGlobal = 0x49,
56 kOpGetProp = 0x4a,
57 kOpGetParam = 0x4b,
58 kOpGetLocal = 0x4c,
59 kOpSetGlobal2 = 0x4e,
60 kOpSetGlobal = 0x4f,
61 kOpSetProp = 0x50,
62 kOpSetParam = 0x51,
63 kOpSetLocal = 0x52,
64 kOpJmp = 0x53,
65 kOpEndRepeat = 0x54,
66 kOpJmpIfZ = 0x55,
67 kOpLocalCall = 0x56,
68 kOpExtCall = 0x57,
69 kOpObjCallV4 = 0x58,
70 kOpPut = 0x59,
71 kOpPutChunk = 0x5a,
72 kOpDeleteChunk = 0x5b,
73 kOpGet = 0x5c,
74 kOpSet = 0x5d,
75 kOpGetMovieProp = 0x5f,
76 kOpSetMovieProp = 0x60,
77 kOpGetObjProp = 0x61,
78 kOpSetObjProp = 0x62,
79 kOpTellCall = 0x63,
80 kOpPeek = 0x64,
81 kOpPop = 0x65,
82 kOpTheBuiltin = 0x66,
83 kOpObjCall = 0x67,
84 kOpPushChunkVarRef = 0x6d,
85 kOpPushInt16 = 0x6e,
86 kOpPushInt32 = 0x6f,
87 kOpGetChainedProp = 0x70,
88 kOpPushFloat32 = 0x71,
89 kOpGetTopLevelProp = 0x72,
90 kOpNewObj = 0x73
91};
92
93enum DatumType {
94 kDatumVoid,
95 kDatumSymbol,
96 kDatumVarRef,
97 kDatumString,
98 kDatumInt,
99 kDatumFloat,
100 kDatumList,
101 kDatumArgList,
102 kDatumArgListNoRet,
103 kDatumPropList
104};
105
106enum ChunkExprType {
107 kChunkChar = 0x01,
108 kChunkWord = 0x02,
109 kChunkItem = 0x03,
110 kChunkLine = 0x04
111};
112
113enum PutType {
114 kPutInto = 0x01,
115 kPutAfter = 0x02,
116 kPutBefore = 0x03
117};
118
119enum NodeType {
120 kNoneNode,
121 kErrorNode,
122 kTempNode,
123 kCommentNode,
124 kLiteralNode,
125 kBlockNode,
126 kHandlerNode,
127 kExitStmtNode,
128 kInverseOpNode,
129 kNotOpNode,
130 kBinaryOpNode,
131 kChunkExprNode,
132 kChunkHiliteStmtNode,
133 kChunkDeleteStmtNode,
134 kSpriteIntersectsExprNode,
135 kSpriteWithinExprNode,
136 kMemberExprNode,
137 kVarNode,
138 kAssignmentStmtNode,
139 kIfStmtNode,
140 kRepeatWhileStmtNode,
141 kRepeatWithInStmtNode,
142 kRepeatWithToStmtNode,
143 kCaseStmtNode,
144 kCaseLabelNode,
145 kOtherwiseNode,
146 kEndCaseNode,
147 kTellStmtNode,
148 kSoundCmdStmtNode,
149 kPlayCmdStmtNode,
150 kCallNode,
151 kObjCallNode,
152 kObjCallV4Node,
153 kTheExprNode,
154 kLastStringChunkExprNode,
155 kStringChunkCountExprNode,
156 kMenuPropExprNode,
157 kMenuItemPropExprNode,
158 kSoundPropExprNode,
159 kSpritePropExprNode,
160 kThePropExprNode,
161 kObjPropExprNode,
162 kObjBracketExprNode,
163 kObjPropIndexExprNode,
164 kExitRepeatStmtNode,
165 kNextRepeatStmtNode,
166 kPutStmtNode,
167 kWhenStmtNode,
168 kNewObjNode
169};
170
171enum BytecodeTag {
172 kTagNone,
173 kTagSkip,
174 kTagRepeatWhile,
175 kTagRepeatWithIn,
176 kTagRepeatWithTo,
177 kTagRepeatWithDownTo,
178 kTagNextRepeatTarget,
179 kTagEndCase
180};
181
182enum CaseExpect {
183 kCaseExpectEnd,
184 kCaseExpectOr,
185 kCaseExpectNext,
186 kCaseExpectOtherwise
187};
188
189enum ScriptFlag {
190 kScriptFlagUnused = (1 << 0x0),
191 kScriptFlagFuncsGlobal = (1 << 0x1),
192 kScriptFlagVarsGlobal = (1 << 0x2), // Occurs in event scripts (which have no local vars). Correlated with use of alternate global var opcodes.
193 kScriptFlagUnk3 = (1 << 0x3),
194 kScriptFlagFactoryDef = (1 << 0x4),
195 kScriptFlagUnk5 = (1 << 0x5),
196 kScriptFlagUnk6 = (1 << 0x6),
197 kScriptFlagUnk7 = (1 << 0x7),
198 kScriptFlagHasFactory = (1 << 0x8),
199 kScriptFlagEventScript = (1 << 0x9),
200 kScriptFlagEventScript2 = (1 << 0xa),
201 kScriptFlagUnkB = (1 << 0xb),
202 kScriptFlagUnkC = (1 << 0xc),
203 kScriptFlagUnkD = (1 << 0xd),
204 kScriptFlagUnkE = (1 << 0xe),
205 kScriptFlagUnkF = (1 << 0xf)
206};
207
208enum LiteralType {
209 kLiteralString = 1,
210 kLiteralInt = 4,
211 kLiteralFloat = 9
212};
213
214}
215
216#endif // LINGODEC_ENUMS_H