protected override void InitOpCodes()
{
opCodes = new Dictionary<int, Func<Statement>>();
/* 00 */
opCodes[0x01] = PushWord;
opCodes[0x02] = PushWordVar;
opCodes[0x03] = WordArrayRead;
/* 04 */
opCodes[0x04] = WordArrayIndexedRead;
opCodes[0x05] = Dup;
opCodes[0x06] = PopStatement;
opCodes[0x07] = Not;
/* 08 */
opCodes[0x08] = Eq;
opCodes[0x09] = NEq;
opCodes[0x0a] = Gt;
opCodes[0x0b] = Lt;
/* 0C */
opCodes[0x0c] = Le;
opCodes[0x0d] = Ge;
opCodes[0x0e] = Add;
opCodes[0x0f] = Sub;
/* 10 */
opCodes[0x10] = Mul;
opCodes[0x11] = Div;
opCodes[0x12] = Land;
opCodes[0x13] = Lor;
/* 14 */
opCodes[0x14] = Band;
opCodes[0x15] = Bor;
opCodes[0x16] = Mod;
/* 18 */
/* 1C */
/* 20 */
/* 24 */
/* 28 */
/* 2C */
/* 30 */
/* 34 */
/* 38 */
/* 3C */
/* 40 */
/* 44 */
/* 4C */
/* 50 */
/* 54 */
/* 58 */
/* 5C */
/* 60 */
/* 64 */
opCodes[0x64] = If;
opCodes[0x65] = IfNot;
opCodes[0x66] = Jump;
opCodes[0x67] = BreakHere;
/* 68 */
opCodes[0x68] = DelayFrames;
opCodes[0x69] = Wait;
opCodes[0x6a] = Delay;
opCodes[0x6b] = DelaySeconds;
/* 6C */
opCodes[0x6c] = DelayMinutes;
opCodes[0x6d] = WriteWordVar;
opCodes[0x6e] = WordVarInc;
opCodes[0x6f] = WordVarDec;
/* 70 */
opCodes[0x70] = DimArray;
opCodes[0x71] = WordArrayWrite;
opCodes[0x72] = WordArrayInc;
opCodes[0x73] = WordArrayDec;
/* 74 */
opCodes[0x74] = Dim2DimArray;
opCodes[0x75] = WordArrayIndexedWrite;
opCodes[0x76] = ArrayOps;
/* 78 */
opCodes[0x79] = StartScript;
opCodes[0x7a] = StartScriptQuick;
opCodes[0x7b] = StopObjectCode;
/* 7C */
opCodes[0x7c] = StopScript;
opCodes[0x7d] = JumpToScript;
opCodes[0x7e] = Dummy;
opCodes[0x7f] = StartObject;
/* 80 */
opCodes[0x80] = StopObjectCode;
opCodes[0x81] = Cutscene;
opCodes[0x82] = EndCutscene;
opCodes[0x83] = FreezeUnfreeze;
/* 84 */
opCodes[0x84] = BeginOverride;
opCodes[0x85] = EndOverride;
opCodes[0x86] = StopSentence;
/* 88 */
opCodes[0x89] = SetClass;
opCodes[0x8a] = SetState;
opCodes[0x8b] = SetOwner;
/* 8C */
opCodes[0x8c] = PanCameraTo;
opCodes[0x8d] = ActorFollowCamera;
opCodes[0x8e] = SetCameraAt;
opCodes[0x8f] = PrintActor;
/* 90 */
opCodes[0x90] = PrintEgo;
opCodes[0x91] = TalkActor;
opCodes[0x92] = TalkEgo;
opCodes[0x93] = PrintLine;
/* 94 */
opCodes[0x94] = PrintText;
opCodes[0x95] = PrintDebug;
opCodes[0x96] = PrintSystem;
opCodes[0x97] = BlastText;
/* 98 */
opCodes[0x98] = DrawObject;
/* 9C */
opCodes[0x9c] = CursorCommand;
opCodes[0x9d] = LoadRoom;
opCodes[0x9e] = LoadRoomWithEgo;
opCodes[0x9f] = WalkActorToObj;
/* A0 */
opCodes[0xa0] = WalkActorTo;
opCodes[0xa1] = PutActorAtXY;
opCodes[0xa2] = PutActorAtObject;
opCodes[0xa3] = FaceActor;
/* A4 */
opCodes[0xa4] = AnimateActor;
opCodes[0xa5] = DoSentence;
opCodes[0xa6] = PickupObject;
opCodes[0xa7] = SetBoxFlags;
/* A8 */
opCodes[0xa8] = CreateBoxMatrix;
opCodes[0xaa] = ResourceRoutines;
opCodes[0xaB] = RoomOps;
/* AC */
opCodes[0xac] = ActorOps;
opCodes[0xad] = CameraOps;
opCodes[0xae] = VerbOps;
opCodes[0xaf] = StartSound;
/* B0 */
opCodes[0xb0] = StartMusic;
opCodes[0xb1] = StopSound;
opCodes[0xb2] = SoundKludge;
opCodes[0xb3] = SystemOps;
/* B4 */
opCodes[0xb4] = SaveRestoreVerbs;
opCodes[0xb5] = SetObjectName;
opCodes[0xb6] = GetDateTime;
opCodes[0xb7] = DrawBox;
/* B8 */
opCodes[0xb9] = StartVideo;
opCodes[0xba] = KernelSetFunctions;
/* BC */
/* C0 */
/* C4 */
/* C8 */
opCodes[0xc8] = StartScriptQuick2;
opCodes[0xc9] = StartObjectQuick;
opCodes[0xca] = PickOneOf;
opCodes[0xcb] = PickOneOfDefault;
/* CC */
opCodes[0xcd] = IsAnyOf;
opCodes[0xce] = GetRandomNumber;
opCodes[0xcf] = GetRandomNumberRange;
/* D0 */
opCodes[0xd0] = IfClassOfIs;
opCodes[0xd1] = GetState;
opCodes[0xd2] = GetOwner;
opCodes[0xd3] = IsScriptRunning;
/* D4 */
opCodes[0xd5] = IsSoundRunning;
opCodes[0xd6] = Abs;
/* D8 */
opCodes[0xd8] = KernelGetFunctions;
opCodes[0xd9] = IsActorInBox;
opCodes[0xda] = GetVerbEntrypoint;
opCodes[0xdb] = GetActorFromXY;
/* DC */
opCodes[0xdc] = FindObject;
opCodes[0xdd] = GetVerbFromXY;
opCodes[0xdf] = FindInventory;
/* E0 */
opCodes[0xe0] = GetInventoryCount;
opCodes[0xe1] = GetActorAnimateVariable;
opCodes[0xe2] = GetActorRoom;
opCodes[0xe3] = GetActorWalkBox;
/* E4 */
opCodes[0xe4] = GetActorMoving;
opCodes[0xe5] = GetActorCostume;
opCodes[0xe6] = GetActorScaleX;
opCodes[0xe7] = GetActorLayer;
/* E8 */
opCodes[0xe8] = GetActorElevation;
opCodes[0xe9] = GetActorWidth;
opCodes[0xea] = GetObjectNewDir;
opCodes[0xeb] = GetObjectX;
/* EC */
opCodes[0xec] = GetObjectY;
opCodes[0xed] = GetActorChore;
opCodes[0xee] = DistObjectObject;
opCodes[0xef] = DistPtPt;
/* F0 */
opCodes[0xf0] = GetObjectImageX;
opCodes[0xf1] = GetObjectImageY;
opCodes[0xf2] = GetObjectImageWidth;
opCodes[0xf3] = GetObjectImageHeight;
/* F4 */
opCodes[0xf6] = GetStringWidth;
opCodes[0xf7] = GetActorZPlane;
}