#!/usr/bin/perl # # Convert the binary grv_high file to the text-based grvscore.dat # eval { use bytes; }; $gameid = 0; print "VC 1.0\n"; sub quote($) { my($i) = @_; my($o) = ''; my($x); for ( $x = 0 ; $x < length($i) ; $x++ ) { $o .= sprintf("%02x", ord(substr($i,$x,1))); } $o .= '00'; return $o; } for ( $i = 0 ; $i < 100 ; $i++ ) { read(STDIN, $hd, 23); ($score, $player, $level, $time) = unpack("dA9vf", $hd); printf STDERR "<..> %14f %-9s %2d %f\n", $score, $player, $level, $time; $level++; $player = quote($player); $score = int($score+0.5); $time = int($time*1000+0.5); $time = ($time > 1800000) ? 0x7fffffff : $time; $gameid++; print "TS $gameid $score $level $player\n"; } for ( $l = 0 ; $l < 75 ; $l++ ) { for ( $i = 0 ; $i < 3 ; $i++ ) { read(STDIN, $hd, 23); ($score, $player, $level, $time) = unpack("dA9vf", $hd); printf STDERR "<%2d> %14f %-9s %2d %f\n", $l,$score, $player, $level, $time; if ( $level == $l ) { $level++; $score = int($score+0.5); $time = int($time*1000+0.5); $time = ($time > 1800000) ? 0x7fffffff : $time; $gameid++; print "LT $gameid $level $time\n" if ( $time != 0x7fffffff ); } } for ( $i = 0 ; $i < 3 ; $i++ ) { read(STDIN, $hd, 23); ($score, $player, $level, $time) = unpack("dA9vf", $hd); printf STDERR "<%2d> %14f %-9s %2d %f\n", $l, $score, $player, $level, $time; if ( 1 || $level == $l ) { $level++; $score = int($score+0.5); $time = int($time*1000+0.5); $time = ($time > 1800000) ? 0x7fffffff : $time; $gameid++; print "LS $gameid $level $score\n" if ( $score ); } } }