128, "fds" => 16, "lynx" => 64, "nes" => 16, "snes" => 512, ); $dir = (isset($_GET["dir"]) ? urldecode($_GET["dir"]) : ""); $type = (isset($_GET["type"]) ? $_GET["type"] : ""); echo "

Remove File Headers

"; // If the directory isn't set or it's not a directory, prompt the user to enter a directory and set which type it is if (trim($dir) == "" || !is_dir($dir)) { echo << Enter a directory name:

Select rom type:
EOL; foreach ($types as $typename => $val) { echo "\t".$typename."
\n"; } echo <<

EOL; } // If a directory is given but the type isn't defined or it's incorrect, give the options for file type elseif (trim($type) == "" || !$types[$type] === "") { echo << Select rom type:
EOL; foreach ($types as $typename => $val) { echo "\t".$typename."
\n"; } echo <<

EOL; } // Otherwise, process the folder else { $dir = $dir."/"; $roms = scandir($dir); echo "\n\n"; foreach ($roms as $rom) { if ($rom == "." || $rom == ".." || is_dir($dir.$rom)) { continue; } $hs = $types[$type]; $handle = fopen($dir.$rom, "r"); $header = fread($handle, $hs); $header = bin2hex($header); $header = strtoupper($header); switch ($type) { case "a7800": $a7800a = preg_match("/^.415441524937383030/", $header); $a7800b = preg_match("/^.{64}41435455414C20434152542044415441205354415254532048455245/", $header); $has_header = ($a7800a == 1 || $a7800b == 1); break; case "fds": $fdsa = preg_match("/^4644531A010000000000000000000000/", $header); $fdsb = preg_match("/^4644531A020000000000000000000000/", $header); $fdsc = preg_match("/^4644531A030000000000000000000000/", $header); $fdsd = preg_match("/^4644531A040000000000000000000000/", $header); $has_header = ($fdsa == 1 || $fdsb == 1 || $fdsc == 1 || $fdsd == 1); break; case "lynx": $lynxa = preg_match("/^4C594E58/", $header); $lynxb = preg_match("/^425339/", $header); $has_header = ($lynxa == 1 || $lynxb == 1); break; case "nes": $nes = preg_match("/^.4E45531A/", $header); $has_header = ($nes == 1); break; case "snes": $fig = preg_match("/^.{16}0000000000000000/", $header); $smc = preg_match("/^.{16}AABB040000000000/", $header); $ufo = preg_match("/^.{16}535550455255464F/", $header); $has_header = ($fig == 1 || $smc == 1 || $ufo == 1); break; default: $has_header = false; break; } echo "\n"; if ($has_header) { $data = fread($handle, filesize($dir.$rom) - 512); $outhandle = fopen($dir.$rom.".new", "w"); fwrite($outhandle, $data); fclose($outhandle); } fclose($handle); } echo "
NameHas Header
".$rom."".($has_header ? "true" : "false")."
\n"; } ?>