#!/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;

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

#read scripts
$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 "Skript $i: ",join ':',@{$roomoffs[$i]},"\n";
}


require "parsescript.pl";

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$i, $lvl, %04x\n",$off;
    
    parse_script(substr($level, 4, $len-4));
}

