#!/usr/bin/perl #OBB Extractor by Pinkazoid use Fcntl; use File::Path; use File::Basename; $basepath = 'ponydata/'; open(INFILE,"ponydata.txt'); if (read(INFILE,$fat,9) == 9) { seek (INFILE,$fat,SEEK_SET); while ($data = ) { print IDXFILE $data; chomp($data); push @filelist,$data; } } else { print "Unable to read first 9 bytes for file table location, aborting.\n"; end; } close(IDXFILE); foreach $data (@filelist) { ($start,$end,$junk,$junk,$filepath) = split(/\s+/,$data,5); if ($filepath =~ /\//) { my ($filename, $filedir) = fileparse($filepath); $filedir = $basepath . $filedir; if (!(-e $filedir)) { mkpath($filedir); } } if (open(OUTFILE,">$basepath$filepath")) { binmode(OUTFILE); seek (INFILE,$start,SEEK_SET); $size = $end - $start; if (read(INFILE,$buffer,$size) == $size) { print OUTFILE $buffer; } else { print "Unable to read $size bytes at location $start, aborting.\n"; end; } close(OUTFILE); } else { print "Unable to open $basepath$filepath for writing, aborting.\n"; end; } } close(INFILE);