//cheat engine search: 300000000-341FFFFFF state("rpcs3") { } startup { settings.Add("IGT for Challenges", false); } init { vars.pointerEU = (IntPtr)0x300671168; //EU version pointer vars.pointermsEU = (IntPtr)0x30067268C; //EU ms pointer vars.pointerUS = (IntPtr)0x300589368; //US version pointer vars.pointerJP = (IntPtr)0x3005CB968; //JP version pointer vars.pointer = IntPtr.Zero; vars.igt = 0.0f; vars.igtMS = 0.0f; vars.previgt = 0.0f; vars.igtAux = 0.0f; } update { // Determining the game version bool gameFound = false; var bytesEU = new byte[4] {0, 0, 0, 0}; var bytesUS = new byte[4] {0, 0, 0, 0}; var bytesJP = new byte[4] {0, 0, 0, 0}; if (!gameFound) { if (memory.ReadBytes((IntPtr)vars.pointerEU, 4, out bytesEU)) { Array.Reverse(bytesEU); if (BitConverter.ToInt32(bytesEU, 0) >= 1 && BitConverter.ToInt32(bytesEU, 0) < 1000000) { gameFound = true; vars.pointer = vars.pointerEU; vars.pointerms = vars.pointermsEU; } } if (memory.ReadBytes((IntPtr)vars.pointerUS, 4, out bytesUS)) { Array.Reverse(bytesUS); if (BitConverter.ToInt32(bytesUS, 0) >= 1 && BitConverter.ToInt32(bytesUS, 0) < 1000000) { gameFound = true; vars.pointer = vars.pointerUS; } } if (memory.ReadBytes((IntPtr)vars.pointerJP, 4, out bytesJP)) { Array.Reverse(bytesJP); if (BitConverter.ToInt32(bytesJP, 0) >= 1 && BitConverter.ToInt32(bytesJP, 0) < 1000000) { gameFound = true; vars.pointer = vars.pointerJP; } } } var bytes = new byte[4] {0, 0, 0, 0}; if (memory.ReadBytes((IntPtr)vars.pointer, 4, out bytes)) { Array.Reverse(bytes); // PS3 is big endian vars.igt = BitConverter.ToInt32(bytes, 0); var bytes2 = new byte[4] {0, 0, 0, 0}; if (memory.ReadBytes((IntPtr)vars.pointerms, 4, out bytes2)) { Array.Reverse(bytes2); // PS3 is big endian vars.igtMS = BitConverter.ToSingle(bytes2, 0); } if (settings["IGT for Challenges"]) //Makes IGT never go back { if (vars.igt > vars.previgt) { vars.igtAux += vars.igt - vars.previgt; vars.previgt = vars.igt; } else { vars.previgt = vars.igt; } } } } start { // Overflow autostart protection if (vars.igt > -1 && vars.igt < 1000000) { if (settings["IGT for Challenges"]) { if (vars.igt == 0) { return true; } } else { if (vars.igt == 0 && vars.previgt > 0) { return true; } else { vars.previgt = vars.igt; } } } } onStart { vars.igtAux = 0; } isLoading { return true; } gameTime { // IGT is in seconds if (settings["IGT for Challenges"]) { return TimeSpan.FromSeconds(vars.igtAux+vars.igtMS); } else { return TimeSpan.FromSeconds(vars.igt+vars.igtMS); } }