// Need to make sure Spidey is frozen via Cheat Engine so levels don't change // Dump number + level title + enemy count // Also, send number rather than level title and just read from static list public static void Main(string[] args) { IEnumerable <IntPtr> handles = null; while (handles == null || handles.Count() == 0 || handles.All(h => h == IntPtr.Zero)) { handles = WindowManager.FindSpideyWindows(); Thread.Sleep(100); } var spideyWindow = WindowManager.GetSpideyWindow(handles.First()); while (!MemoryScanner.GetMemoryAddresses(out string error, spideyWindow.Handle, true)) { Thread.Sleep(100); } try { MemoryScanner.WriteSpideyXAndYPosition(0x77, 0x77); using (var output = new StreamWriter("Levels.txt", false)) { for (byte levelNumber = 0x00; levelNumber <= 0x3F; ++levelNumber) { MemoryScanner.WriteSpideyLevelCheatData(levelNumber); var stopwatch = new Stopwatch(); stopwatch.Start(); while (stopwatch.ElapsedMilliseconds < 500) { MemoryScanner.WriteSpideyXAndYPosition(0x77, 0x77); } var name = AsciiEncoding.GetString(MemoryScanner.ReadLevelNameData()); var enemyCount = MemoryScanner.ReadEnemyCountData(); output.WriteLine(levelNumber.ToString("X2") + "|" + name + "|" + enemyCount.ToString("X2")); } } } finally { MemoryScanner.CloseDosBoxHandle(); } }