/// <summary> /// Set the specified variable to a random entry from the selected hitlist. /// </summary> public static HITResult SmartChoose(HITThread thread) { var dest = thread.ReadByte(); thread.WriteVar(dest, (int)thread.HitlistChoose()); return(HITResult.CONTINUE); }
public static HITResult NoteOnLoop(HITThread thread) //0x60 { var dest = thread.ReadByte(); thread.WriteVar(dest, thread.NoteLoop()); return(HITResult.CONTINUE); }
/// <summary> /// Write a 4-byte constant to a variable. /// </summary> public static HITResult LoadL(HITThread thread) { var dest = thread.ReadByte(); var value = thread.ReadInt32(); thread.WriteVar(dest, value); thread.SetFlags(value); return(HITResult.CONTINUE); }
/// <summary> /// Copy the contents of one variable into another. /// </summary> public static HITResult Set(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadVar(thread.ReadByte()); thread.WriteVar(dest, src); thread.SetFlags(src); return(HITResult.CONTINUE); }
/// <summary> /// Read globally, set locally (source: defaultsyms.txt). /// </summary> public static HITResult SetGL(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadInt32(); int Global = thread.VM.ReadGlobal(src); thread.WriteVar(dest, Global); return(HITResult.CONTINUE); }
/// <summary> /// Find the lower of a "dest" variable and a "src" constant and store the result in the variable. /// </summary> public static HITResult Min(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadInt32(); var result = Math.Min(thread.ReadVar(dest), src); thread.WriteVar(dest, result); thread.SetFlags(result); return(HITResult.CONTINUE); //unused in the sims }
//0x10 /// <summary> /// Increment a "dest" variable by a "src" variable. /// </summary> public static HITResult Add(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadByte(); var result = thread.ReadVar(dest) + thread.ReadVar(src); thread.WriteVar(dest, result); thread.SetFlags(result); return HITResult.CONTINUE; }
public static HITResult GetSrcDataField(HITThread thread) { var dest = thread.ReadByte(); var srcID = thread.ReadByte(); var field = thread.ReadByte(); //looks like this reads from object vars, though gender is apparently field 0 whereas object vars start at IsInsideViewFrustrum... thread.WriteVar(dest, 0); //set it to 0 for now... thread.SetFlags(0); return(HITResult.CONTINUE); }
/// <summary> /// Multiply a "dest" variable by a "src" variable. /// </summary> public static HITResult Mul(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadByte(); var result = thread.ReadVar(dest) * thread.ReadVar(src); thread.WriteVar(dest, result); thread.SetFlags(result); return(HITResult.CONTINUE); }
/// <summary> /// Load a track ("index" variable) from a hitlist ("table" variable). /// </summary> public static HITResult SmartIndex(HITThread thread) { var dest = thread.ReadVar(thread.ReadByte()); var index = thread.ReadVar(thread.ReadByte()); thread.LoadHitlist((byte)index); //Converting this to an int is a hack because WriteVar only takes an int... o_O int TrackID = (int)thread.LoadTrack(index); thread.WriteVar(dest, TrackID); return(HITResult.CONTINUE); //Appears to be unused. }
/// <summary> /// Generate a random number between "low" and "high" variables, inclusive, /// and store the result in the "dest" variable. /// </summary> public static HITResult Rand(HITThread thread) { var dest = thread.ReadByte(); var low = thread.ReadByte(); var high = thread.ReadByte(); var result = (new Random()).Next(high + 1 - low) + low; thread.WriteVar(dest, result); thread.SetFlags(result); return(HITResult.CONTINUE); }
public static HITResult GetSrcDataField(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadByte(); var field = thread.ReadByte(); int ObjectVar = thread.ReadVar(src); ObjectVar = thread.ReadVar(10010 + ObjectVar); thread.WriteVar(dest, ObjectVar); thread.SetFlags(ObjectVar); return(HITResult.CONTINUE); }
/// <summary> /// Load a track ("index" variable) from a hitlist ("table" variable). /// </summary> public static HITResult SmartIndex(HITThread thread) { var dest = thread.ReadVar(thread.ReadByte()); var index = thread.ReadVar(thread.ReadByte()); thread.LoadHitlist((byte)index); //Converting this to an int is a hack because WriteVar only takes an int... o_O int TrackID = (int)thread.LoadTrack(index); thread.WriteVar(dest, TrackID); return HITResult.CONTINUE; //Appears to be unused. }
/// <summary> /// Set the specified variable to a random entry from the selected hitlist. /// </summary> public static HITResult SmartChoose(HITThread thread) { var dest = thread.ReadByte(); thread.WriteVar(dest, (int)thread.HitlistChoose()); return HITResult.CONTINUE; }
/// <summary> /// Read globally, set locally (source: defaultsyms.txt). /// </summary> public static HITResult SetGL(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadInt32(); int Global = thread.VM.ReadGlobal(src); thread.WriteVar(dest, Global); return HITResult.CONTINUE; }
/// <summary> /// Copy the contents of one variable into another. /// </summary> public static HITResult Set(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadVar(thread.ReadByte()); thread.WriteVar(dest, src); thread.SetFlags(src); return HITResult.CONTINUE; }
/// <summary> /// Generate a random number between "low" and "high" variables, inclusive, /// and store the result in the "dest" variable. /// </summary> public static HITResult Rand(HITThread thread) { var dest = thread.ReadByte(); var low = thread.ReadByte(); var high = thread.ReadByte(); var result = (new Random()).Next(high+1-low)+low; thread.WriteVar(dest, result); thread.SetFlags(result); return HITResult.CONTINUE; }
//0x60 public static HITResult NoteOnLoop(HITThread thread) { var dest = thread.ReadByte(); thread.WriteVar(dest, thread.NoteLoop()); return HITResult.CONTINUE; }
/// <summary> /// Find the lower of a "dest" variable and a "src" constant and store the result in the variable. /// </summary> public static HITResult Min(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadInt32(); var result = Math.Min(thread.ReadVar(dest), src); thread.WriteVar(dest, result); thread.SetFlags(result); return HITResult.CONTINUE; //unused in the sims }
/// <summary> /// Write a 4-byte constant to a variable. /// </summary> public static HITResult LoadL(HITThread thread) { var dest = thread.ReadByte(); var value = thread.ReadInt32(); thread.WriteVar(dest, value); thread.SetFlags(value); return HITResult.CONTINUE; }
public static HITResult GetSrcDataField(HITThread thread) { var dest = thread.ReadByte(); var src = thread.ReadByte(); var field = thread.ReadByte(); int ObjectVar = thread.ReadVar(src); thread.WriteVar(dest, ObjectVar); thread.SetFlags(ObjectVar); return HITResult.CONTINUE; }