Ich bin ein bisschen spät zur Party, aber ich habe an diesen Leistungen gearbeitet. Ich benutze einen Mac die meiste Zeit, und ich hatte eine harte Zeit, Super Meat Boy Stats zu bekommen, um unter osx zu arbeiten, also schrieb ich ein kleines Python-Skript, um meine Gesamtzeit für jeden Bereich zu bekommen. Ich dachte, jemand anderes könnte auch das nützlich finden:
http://pastebin.com/DmsHfPhU (und auch unten kopiert)
Verwendung: python% script%% savegame.dat%
BEARBEITEN:
Hier sind meine besten Vermutungen für jedes Mal, basierend auf meiner eigenen Erfahrung:
- Selten: 265
- Medium Selten: 445
- Mittel: 515
- Mittel gut: 500
- Gut gemacht: 690-695 (ich ging von 697 auf 688, als ich das bekam)
Ich habe auch das Skript aktualisiert, um keine Warp-Zeiten einzuschließen, da die Leute sagten, sie hätten diese bekommen, ohne auch nur die Ketten zu entriegeln.
from sys import argv import struct totalDeathsOffset = 8 chapterInfoStart = 28 chapterInfoOffset = 12 levelOffset = 12 levelStart = 0x88 TheGuyWarpZoneStart = 0xF10 ZoneNames = ['Forest ', 'Hospital ', 'Salt Factor ', 'Hell ', 'Rapture ', 'The End ', 'Cotton Alley'] def maxLevelCount(zone): if zone != 5: return 20 else: return 5 def maxWarpCount(zone): if zone < 5: return 12 else: return 0 def toInt32(lst,offset): s = lst[offset:offset+4] return struct.unpack("<L",s)[0] def getLevelInfo(save, zone, level, kind): offset = 0 if kind == 2 and zone == 4 and level >= 3 and level <= 5: offset = TheGuyWarpZoneStart + (level - 3)*levelOffset else: chapterOffset = 0 for i in range(zone): chapterOffset += (maxLevelCount(i)*2+maxWarpCount(i))*levelOffset levelOffset2 = (level + maxLevelCount(zone) * kind)*levelOffset offset = levelStart + chapterOffset + levelOffset2 time = struct.unpack("<f", save[offset:offset+4])[0] return time def getLevels(save, zone, kind): levels = [] if kind < 2: for i in range(maxLevelCount(zone)): levels.append(getLevelInfo(save, zone, i, kind)) else: for i in range(maxWarpCount(zone)): levels.append(getLevelInfo(save, zone, i, kind)) return levels def readChapter(save, n): offset = chapterInfoStart + (n * chapterInfoOffset) data = struct.unpack("bbbbb", save[offset:offset+5]) lightLevels = getLevels(save, n, 0) darkLevels = getLevels(save, n, 1) warpLevels = getLevels(save, n, 2) #print n, data #print lightLevels #print darkLevels #print warpLevels print "Total Time (", ZoneNames[n] ,"): ", sum(lightLevels)+ sum(darkLevels) #+sum(warpLevels) def readstats(spath): blist = [] with open(spath, "rb") as f: blist = f.read() totalDeaths = toInt32(blist, totalDeathsOffset) print "Total Deaths:", totalDeaths chapters = [] for i in range(7): chapters.append(readChapter(blist, i)) def main(): if len(argv) > 1: readstats(argv[1]) if __name__ == "__main__": main()