private void CreateSkinSignatures() { Signatures[(int)SignatureNames.CurrentSkinData] = new SigEx { Name = "currentSkinData", Pattern = PatternHelpers.UnpackStr("75218b1d"), UseMask = false, Offset = 4, PointerOffsets = { 0, 0 } }; Signatures[(int)SignatureNames.CurrentSkinFolder] = new SigEx { Name = "currentSkinFolder", ParentSig = Signatures[(int)SignatureNames.CurrentSkinData], Offset = 68 }; }
private void CreateTourneySignatures() { Signatures.Add((int)SignatureNames.TourneyBase, new SigEx { Name = "TourneyBase", Pattern = PatternHelpers.UnpackStr("7D15A10000000085C0"), Mask = "xxx????xx", Offset = -0xB }); Signatures.Add((int)SignatureNames.TourneyIpcState, new SigEx { ParentSig = Signatures[(int)SignatureNames.TourneyBase], PointerOffsets = { 4, 0x54 } }); Signatures.Add((int)SignatureNames.TourneyLeftStars, new SigEx { ParentSig = Signatures[(int)SignatureNames.TourneyBase], PointerOffsets = { 4, 0x1C, 0x2C } }); Signatures.Add((int)SignatureNames.TourneyRightStars, new SigEx { ParentSig = Signatures[(int)SignatureNames.TourneyBase], PointerOffsets = { 4, 0x20, 0x2C } }); Signatures.Add((int)SignatureNames.TourneyBO, new SigEx { ParentSig = Signatures[(int)SignatureNames.TourneyBase], PointerOffsets = { 4, 0x20, 0x30 } }); Signatures.Add((int)SignatureNames.TourneyStarsVisible, new SigEx { ParentSig = Signatures[(int)SignatureNames.TourneyBase], PointerOffsets = { 4, 0x20, 0x38 } }); Signatures.Add((int)SignatureNames.TourneyScoreVisible, new SigEx { ParentSig = Signatures[(int)SignatureNames.TourneyBase], PointerOffsets = { 4, 0x20, 0x39 } }); }
internal void CreateSignatures() { Signatures.Add((int)SignatureNames.OsuBase, new SigEx { Name = "OsuBase", Pattern = PatternHelpers.UnpackStr("F80174048365"), UseMask = false }); Signatures.Add((int)SignatureNames.GameMode, new SigEx { ParentSig = Signatures[(int)SignatureNames.OsuBase], Offset = -51, PointerOffsets = { 0 } }); Signatures.Add((int)SignatureNames.Retrys, new SigEx { ParentSig = Signatures[(int)SignatureNames.OsuBase], Offset = -51, PointerOffsets = { 8 } }); CreateBeatmapDataSignatures(); Signatures.Add((int)SignatureNames.OsuStatus, new SigEx { Name = "OsuStatus", ParentSig = Signatures[(int)SignatureNames.OsuBase], Offset = -60, PointerOffsets = { 0 } }); Signatures.Add((int)SignatureNames.PlayTime, new SigEx { Name = "PlayTime", ParentSig = Signatures[(int)SignatureNames.OsuBase], Offset = 100, PointerOffsets = { -16 } }); Signatures[(int)SignatureNames.Mods] = new SigEx { Name = "mods", Pattern = PatternHelpers.UnpackStr("C8FF0000000000810D0000000000080000"), Mask = "xx?????xx????xxxx", Offset = 9, PointerOffsets = { 0 }, UseMask = true, }; Signatures[(int)SignatureNames.IsReplay] = new SigEx { Name = "IsReplay", Pattern = PatternHelpers.UnpackStr("741A80000000000000741180"), Mask = "xxx??????xxx", Offset = 13, PointerOffsets = { 0 }, UseMask = true, }; CreateSkinSignatures(); CreatePlaySignatures(); CreateTourneySignatures(); }
private void CreatePlaySignatures() { Signatures.Add((int)SignatureNames.PlayContainer, new SigEx { //avaliable only when playing; //need to reset on each play Name = "PlayContainer", Pattern = PatternHelpers.UnpackStr("C7864801000001000000A1"), Offset = 0xB, PointerOffsets = { 0x4, 0x60 }, UseMask = false }); Signatures.Add((int)SignatureNames.PlayingMods, new SigEx { //Complex - 2 xored ints ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 28 } }); Signatures.Add((int)SignatureNames.PlayerName, new SigEx { //char[] ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 40 } }); Signatures.Add((int)SignatureNames.HitErrors, new SigEx { //int[] ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 56 } }); Signatures.Add((int)SignatureNames.Combo, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 148 } }); Signatures.Add((int)SignatureNames.ComboMax, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 104 } }); Signatures.Add((int)SignatureNames.Hit100c, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 136 } }); Signatures.Add((int)SignatureNames.Hit300c, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 138 } }); Signatures.Add((int)SignatureNames.Hit50c, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 140 } }); Signatures.Add((int)SignatureNames.HitGeki, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 142 } }); Signatures.Add((int)SignatureNames.HitKatsu, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 144 } }); Signatures.Add((int)SignatureNames.HitMissc, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 146 } }); Signatures.Add((int)SignatureNames.Score, new SigEx { //int ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 120 } }); Signatures.Add((int)SignatureNames.PlayingGameMode, new SigEx { //int ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 56, 104 } }); Signatures.Add((int)SignatureNames.Acc, new SigEx { //double ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 72, 20 } }); Signatures.Add((int)SignatureNames.PlayerHp, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 64, 28 } }); Signatures.Add((int)SignatureNames.PlayerHpSmoothed, new SigEx { //ushort ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 64, 20 } }); Signatures.Add((int)SignatureNames.ScoreV2, new SigEx { //int ParentSig = Signatures[(int)SignatureNames.PlayContainer], PointerOffsets = { 0x4C, 0xC, 0x68, 0x4, 0xF8 } }); }