Je suis un peu en retard sur la fête, mais j'ai travaillé sur ces réalisations. J'utilise un mac la plupart du temps, et j'avais du mal à faire fonctionner Super Meat Boy Stats sous osx, alors j'ai écrit un petit script python pour obtenir mes temps totaux pour chaque zone. J'ai pensé que quelqu'un d'autre pourrait également trouver cela utile :
http://pastebin.com/DmsHfPhU (et également copié ci-dessous)
Utilisation : python %script% %savegame.dat%.
EDITAR:
Voici mes meilleures suppositions pour chaque temps, basées sur ma propre expérience :
- Rare : 265
- Saumure moyenne : 445
- Moyen : 515
- Puits moyen : 500
- Bien fait : 690-695 (je suis passé de 697 à 688 quand j'ai eu ça)
J'ai également mis à jour le script pour ne pas inclure les temps de distorsion, puisque des gens ont dit qu'ils les avaient obtenus sans même avoir débloqué tous les warps.
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()