Initial commit
This commit is contained in:
216
engines/director/lingo/lingodec/enums.h
Normal file
216
engines/director/lingo/lingodec/enums.h
Normal file
@@ -0,0 +1,216 @@
|
||||
/*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#ifndef LINGODEC_ENUMS_H
|
||||
#define LINGODEC_ENUMS_H
|
||||
|
||||
namespace LingoDec {
|
||||
|
||||
enum OpCode {
|
||||
// single-byte
|
||||
kOpRet = 0x01,
|
||||
kOpRetFactory = 0x02,
|
||||
kOpPushZero = 0x03,
|
||||
kOpMul = 0x04,
|
||||
kOpAdd = 0x05,
|
||||
kOpSub = 0x06,
|
||||
kOpDiv = 0x07,
|
||||
kOpMod = 0x08,
|
||||
kOpInv = 0x09,
|
||||
kOpJoinStr = 0x0a,
|
||||
kOpJoinPadStr = 0x0b,
|
||||
kOpLt = 0x0c,
|
||||
kOpLtEq = 0x0d,
|
||||
kOpNtEq = 0x0e,
|
||||
kOpEq = 0x0f,
|
||||
kOpGt = 0x10,
|
||||
kOpGtEq = 0x11,
|
||||
kOpAnd = 0x12,
|
||||
kOpOr = 0x13,
|
||||
kOpNot = 0x14,
|
||||
kOpContainsStr = 0x15,
|
||||
kOpContains0Str = 0x16,
|
||||
kOpGetChunk = 0x17,
|
||||
kOpHiliteChunk = 0x18,
|
||||
kOpOntoSpr = 0x19,
|
||||
kOpIntoSpr = 0x1a,
|
||||
kOpGetField = 0x1b,
|
||||
kOpStartTell = 0x1c,
|
||||
kOpEndTell = 0x1d,
|
||||
kOpPushList = 0x1e,
|
||||
kOpPushPropList = 0x1f,
|
||||
kOpSwap = 0x21,
|
||||
|
||||
// multi-byte
|
||||
kOpPushInt8 = 0x41,
|
||||
kOpPushArgListNoRet = 0x42,
|
||||
kOpPushArgList = 0x43,
|
||||
kOpPushCons = 0x44,
|
||||
kOpPushSymb = 0x45,
|
||||
kOpPushVarRef = 0x46,
|
||||
kOpGetGlobal2 = 0x48,
|
||||
kOpGetGlobal = 0x49,
|
||||
kOpGetProp = 0x4a,
|
||||
kOpGetParam = 0x4b,
|
||||
kOpGetLocal = 0x4c,
|
||||
kOpSetGlobal2 = 0x4e,
|
||||
kOpSetGlobal = 0x4f,
|
||||
kOpSetProp = 0x50,
|
||||
kOpSetParam = 0x51,
|
||||
kOpSetLocal = 0x52,
|
||||
kOpJmp = 0x53,
|
||||
kOpEndRepeat = 0x54,
|
||||
kOpJmpIfZ = 0x55,
|
||||
kOpLocalCall = 0x56,
|
||||
kOpExtCall = 0x57,
|
||||
kOpObjCallV4 = 0x58,
|
||||
kOpPut = 0x59,
|
||||
kOpPutChunk = 0x5a,
|
||||
kOpDeleteChunk = 0x5b,
|
||||
kOpGet = 0x5c,
|
||||
kOpSet = 0x5d,
|
||||
kOpGetMovieProp = 0x5f,
|
||||
kOpSetMovieProp = 0x60,
|
||||
kOpGetObjProp = 0x61,
|
||||
kOpSetObjProp = 0x62,
|
||||
kOpTellCall = 0x63,
|
||||
kOpPeek = 0x64,
|
||||
kOpPop = 0x65,
|
||||
kOpTheBuiltin = 0x66,
|
||||
kOpObjCall = 0x67,
|
||||
kOpPushChunkVarRef = 0x6d,
|
||||
kOpPushInt16 = 0x6e,
|
||||
kOpPushInt32 = 0x6f,
|
||||
kOpGetChainedProp = 0x70,
|
||||
kOpPushFloat32 = 0x71,
|
||||
kOpGetTopLevelProp = 0x72,
|
||||
kOpNewObj = 0x73
|
||||
};
|
||||
|
||||
enum DatumType {
|
||||
kDatumVoid,
|
||||
kDatumSymbol,
|
||||
kDatumVarRef,
|
||||
kDatumString,
|
||||
kDatumInt,
|
||||
kDatumFloat,
|
||||
kDatumList,
|
||||
kDatumArgList,
|
||||
kDatumArgListNoRet,
|
||||
kDatumPropList
|
||||
};
|
||||
|
||||
enum ChunkExprType {
|
||||
kChunkChar = 0x01,
|
||||
kChunkWord = 0x02,
|
||||
kChunkItem = 0x03,
|
||||
kChunkLine = 0x04
|
||||
};
|
||||
|
||||
enum PutType {
|
||||
kPutInto = 0x01,
|
||||
kPutAfter = 0x02,
|
||||
kPutBefore = 0x03
|
||||
};
|
||||
|
||||
enum NodeType {
|
||||
kNoneNode,
|
||||
kErrorNode,
|
||||
kTempNode,
|
||||
kCommentNode,
|
||||
kLiteralNode,
|
||||
kBlockNode,
|
||||
kHandlerNode,
|
||||
kExitStmtNode,
|
||||
kInverseOpNode,
|
||||
kNotOpNode,
|
||||
kBinaryOpNode,
|
||||
kChunkExprNode,
|
||||
kChunkHiliteStmtNode,
|
||||
kChunkDeleteStmtNode,
|
||||
kSpriteIntersectsExprNode,
|
||||
kSpriteWithinExprNode,
|
||||
kMemberExprNode,
|
||||
kVarNode,
|
||||
kAssignmentStmtNode,
|
||||
kIfStmtNode,
|
||||
kRepeatWhileStmtNode,
|
||||
kRepeatWithInStmtNode,
|
||||
kRepeatWithToStmtNode,
|
||||
kCaseStmtNode,
|
||||
kCaseLabelNode,
|
||||
kOtherwiseNode,
|
||||
kEndCaseNode,
|
||||
kTellStmtNode,
|
||||
kSoundCmdStmtNode,
|
||||
kPlayCmdStmtNode,
|
||||
kCallNode,
|
||||
kObjCallNode,
|
||||
kObjCallV4Node,
|
||||
kTheExprNode,
|
||||
kLastStringChunkExprNode,
|
||||
kStringChunkCountExprNode,
|
||||
kMenuPropExprNode,
|
||||
kMenuItemPropExprNode,
|
||||
kSoundPropExprNode,
|
||||
kSpritePropExprNode,
|
||||
kThePropExprNode,
|
||||
kObjPropExprNode,
|
||||
kObjBracketExprNode,
|
||||
kObjPropIndexExprNode,
|
||||
kExitRepeatStmtNode,
|
||||
kNextRepeatStmtNode,
|
||||
kPutStmtNode,
|
||||
kWhenStmtNode,
|
||||
kNewObjNode
|
||||
};
|
||||
|
||||
enum BytecodeTag {
|
||||
kTagNone,
|
||||
kTagSkip,
|
||||
kTagRepeatWhile,
|
||||
kTagRepeatWithIn,
|
||||
kTagRepeatWithTo,
|
||||
kTagRepeatWithDownTo,
|
||||
kTagNextRepeatTarget,
|
||||
kTagEndCase
|
||||
};
|
||||
|
||||
enum CaseExpect {
|
||||
kCaseExpectEnd,
|
||||
kCaseExpectOr,
|
||||
kCaseExpectNext,
|
||||
kCaseExpectOtherwise
|
||||
};
|
||||
|
||||
enum ScriptFlag {
|
||||
kScriptFlagUnused = (1 << 0x0),
|
||||
kScriptFlagFuncsGlobal = (1 << 0x1),
|
||||
kScriptFlagVarsGlobal = (1 << 0x2), // Occurs in event scripts (which have no local vars). Correlated with use of alternate global var opcodes.
|
||||
kScriptFlagUnk3 = (1 << 0x3),
|
||||
kScriptFlagFactoryDef = (1 << 0x4),
|
||||
kScriptFlagUnk5 = (1 << 0x5),
|
||||
kScriptFlagUnk6 = (1 << 0x6),
|
||||
kScriptFlagUnk7 = (1 << 0x7),
|
||||
kScriptFlagHasFactory = (1 << 0x8),
|
||||
kScriptFlagEventScript = (1 << 0x9),
|
||||
kScriptFlagEventScript2 = (1 << 0xa),
|
||||
kScriptFlagUnkB = (1 << 0xb),
|
||||
kScriptFlagUnkC = (1 << 0xc),
|
||||
kScriptFlagUnkD = (1 << 0xd),
|
||||
kScriptFlagUnkE = (1 << 0xe),
|
||||
kScriptFlagUnkF = (1 << 0xf)
|
||||
};
|
||||
|
||||
enum LiteralType {
|
||||
kLiteralString = 1,
|
||||
kLiteralInt = 4,
|
||||
kLiteralFloat = 9
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // LINGODEC_ENUMS_H
|
||||
Reference in New Issue
Block a user