#!/usr/bin/perl

open LEVEL, "<00.lfl";
read LEVEL, $level, 1024*1024;
$level =~ s/(.)/chr(ord($1)^0xff)/egs;
close LEVEL;

# skip objects
$n = unpack "v", substr($level, 2,2);
$level = substr($level, 4+$n);

#skip unknowns
$n = unpack "c", substr($level, 0, 1);
$level = substr $level,1+3*$n;
print "$n:", length($level),"\n";

#skip costumes
$n = unpack "c", substr($level, 0, 1);
$level = substr $level,1+3*$n;

#skip scripts
$n = (unpack "c", substr($level, 0, 1)) &0xff;
$level = substr $level,1+3*$n;

#read music
$n = (unpack "c", substr($level, 0, 1)) &0xff;
$level = substr $level,1;
for ($i = 0; $i < $n; $i++) {
    $roomoffs[$i] = [ord(substr($level, $i,1))&0xff, 
		 unpack "v", substr($level, $n+2*$i, 2) ];
    print "Music $i: ",join ':',@{$roomoffs[$i]},"\n";
}


if (!@ARGV) {
    @list = ( 1..($n-1));
} else {
    @list = @ARGV;
}

for $i (@list) {
    my ($lvl,$off) = @{$roomoffs[$i]};
    next if $lvl == 255;
    open LEVEL, sprintf("<%02d.lfl", $lvl);
    read LEVEL, $level, 1024*1024;
    $level =~ s/(.)/chr(ord($1)^0xff)/egs;
    close LEVEL;
    $level = substr $level, $off;
    $len = unpack("v", $level) &0xffff;


    printf "\n%3d, %2d, %04x--%04x  (%04x)\n",$i, $lvl,$off, $off+$len, $len;
    printf "   SPK : %04x,%04x,%04x,%04x\n", unpack("vvvv", substr $level,6,8);
    printf "   PCjr: %04x,%04x,%04x,%04x\n", unpack("vvvv", substr $level,14,8);
}

