protected void FStringWidth(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter str = GetVarOrByte(opcode, 0x80); Add(SCUMMOpcode.F_StringWidth, var, str); }
protected void OwnerOf(int opcode) { SCUMMParameter objectNo = GetVarOrWord(opcode, 0x80); SCUMMParameter owner = GetVarOrByte(opcode, 0x40); Add(SCUMMOpcode.C_OwnerOf, objectNo, owner); }
protected void PutActorInRoom(int opcode) { SCUMMParameter actor = GetVarOrByte(opcode, 0x80); SCUMMParameter room = GetVarOrByte(opcode, 0x40); Add(SCUMMOpcode.C_PutActorInRoom, actor, room); }
protected void FaceTowards(int opcode) { SCUMMParameter actor = GetVarOrByte(opcode, 0x80); SCUMMParameter actobj = GetVarOrWord(opcode, 0x40); Add(SCUMMOpcode.C_FaceTowards, actor, actobj); }
protected void IfVar(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter jumpDest = GetNumberSigned(); Add(SCUMMOpcode.C_IfVar, var, jumpDest); }
protected void FSoundRunning(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter soundNo = GetVarOrByte(opcode, 0x80); Add(SCUMMOpcode.F_SoundRunning, var, soundNo); }
protected void ActorElevation(int opcode) { SCUMMParameter actor = GetVarOrByte(opcode, 0x80); SCUMMParameter elevation = GetVarOrByte(opcode, 0x40); Add(SCUMMOpcode.C_ActorElevation, actor, elevation); }
protected void WaitForStuff(int opcode) { Add(SCUMMOpcode.C_WaitForStuff); byte subOpcode = reader.ReadU8(); switch (subOpcode & 0x1f) { case 0x01: SCUMMParameter actor = GetVarOrByte(subOpcode, 0x80); Add(SCUMMOpcode.SC_WaitForActor, actor); break; case 0x02: Add(SCUMMOpcode.SC_WaitForMessage); break; case 0x03: Add(SCUMMOpcode.SC_WaitForCamera); break; case 0x04: Add(SCUMMOpcode.SC_WaitForSentence); break; default: throw UnknownSubOpcode("wait-for-stuff", subOpcode); } }
protected void StoreByteVariable(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter value = GetByte(); Add(SCUMMOpcode.C_StoreByteVariable, var, value); }
protected void PickUpObjectInRoom(int opcode) { SCUMMParameter objectNo = GetVarOrWord(opcode, 0x80); SCUMMParameter roomNo = GetVarOrByte(opcode, 0x40); Add(SCUMMOpcode.C_PickUpObjectInRoom, objectNo, roomNo); }
protected void StateOf(int opcode) { SCUMMParameter objectNo = GetVarOrWord(opcode, 0x80); SCUMMParameter state = GetVarOrByte(opcode, 0x40); Add(SCUMMOpcode.C_StateOf, objectNo, state); }
protected void Mul(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter factor = GetNumber(); Add(SCUMMOpcode.C_MulVariable, var, factor); }
protected void Div(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter divisor = GetNumber(); Add(SCUMMOpcode.C_DivVariable, var, divisor); }
protected override void ChainScript(int opcode) { SCUMMParameter scriptNo = GetVarOrByte(opcode, 0x80); SCUMMParameter prms = GetParams(16, "chain-script"); Add(SCUMMOpcode.C_ChainScript, scriptNo, prms); }
protected void FRandom(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter max = GetVarOrByte(opcode, 0x80); Add(SCUMMOpcode.F_Random, var, max); }
protected void StoreVariableIndirect(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter value = GetVarOrWord(opcode, 0x80); Add(SCUMMOpcode.C_StoreVariableIndirect, var, value); }
protected void FScriptRunning(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter scriptNo = GetVarOrByte(opcode, 0x80); Add(SCUMMOpcode.F_ScriptRunning, var, scriptNo); }
protected void Sub(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter term = GetNumber(); Add(SCUMMOpcode.C_SubVariable, var, term); }
protected void FVerbOf(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter objectNo = GetVarOrWord(opcode, 0x80); Add(SCUMMOpcode.F_OwnerOf, var, objectNo); }
protected void VerbOf(int opcode) { SCUMMParameter obj = GetVarOrWord(opcode, 0x80); SCUMMParameter value = GetByte(); Add(SCUMMOpcode.C_VerbOf, obj, value); }
protected void AddIndirect(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter term = GetNumber(); Add(SCUMMOpcode.C_AddVariableIndirect, var, term); }
protected void FActorElevation(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter actor = GetVarOrByte(opcode, 0x80); Add(SCUMMOpcode.F_ActorElevation, var, actor); }
protected void IfStateOf8(int opcode) { SCUMMParameter obj = GetVarOrWord(opcode, 0x80); SCUMMParameter jumpDest = GetNumberSigned(); Add(SCUMMOpcode.C_IfStateOf8, obj, jumpDest); }
protected void FActorMoving(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter actorNo = GetVarOrByte(opcode, 0x80); Add(SCUMMOpcode.F_ActorMoving, var, actorNo); }
protected void NewNameOf(int opcode) { SCUMMParameter obj = GetVarOrWord(opcode, 0x80); SCUMMParameter str = GetString(); Add(SCUMMOpcode.C_NewNameOf, obj, str); }
protected virtual void FActorY(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter actor = GetVarOrByte(opcode, 0x80); Add(SCUMMOpcode.F_ActorY, var, actor); }
protected void PutActorAtObject(int opcode) { SCUMMParameter actorNo = GetVarOrByte(opcode, 0x80); SCUMMParameter objectNo = GetVarOrWord(opcode, 0x40); Add(SCUMMOpcode.C_PutActorAtObject, actorNo, objectNo); }
protected void FClosestActor(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter objectNo = GetVarOrWord(opcode, 0x80); Add(SCUMMOpcode.F_ClosestActor, var, objectNo); }
protected virtual void SayLine(int opcode) { SCUMMParameter actorNo = GetVarOrByte(opcode, 0x80); SCUMMParameter line = GetString(); if (actorNo.Type == SCUMMParameterType.Number && Convert.ToInt32(actorNo.Value) >= 252) { int actorNoValue = Convert.ToInt32(actorNo.Value); switch (actorNoValue) { // TODO: These should have "Simple" opcode variations case 252: Add(SCUMMOpcode.C_PrintSystem, line); break; case 253: Add(SCUMMOpcode.C_PrintDebug, line); break; case 254: Add(SCUMMOpcode.C_PrintText, line); break; case 255: Add(SCUMMOpcode.C_PrintLine, line); break; } } else { Add(SCUMMOpcode.C_SayLineSimple, actorNo, line); } }
protected void FStateOf(int opcode) { SCUMMParameter var = GetVar(); SCUMMParameter objectNo = GetVarOrByte(opcode, 0x80); Add(SCUMMOpcode.F_StateOf, var, objectNo); }