00001 #!/usr/bin/perl -w
00002
00003 use strict;
00004
00005 use XML::Simple;
00006 use Date::Manip;
00007
00008 Date_Init();
00009
00010 if (!$ARGV[0])
00011 {
00012 die("Not exist mame xml");
00013 }
00014
00015
00016 my $xml = new XML::Simple;
00017
00018 my $data = $xml->XMLin($ARGV[0]);
00019
00020 $data->{build} =~ /\((.*?)\)/gs;
00021
00022 my $date = UnixDate(ParseDate($1), '%Y%m%d');
00023
00024 my $category;
00025
00026 sub insert_sql
00027 {
00028 my ($crc, $description, $category, $year, $manufacturer, $size, $file) = @_;
00029
00030 if (! $year)
00031 {
00032 $year = "????";
00033 }
00034
00035 #my $game = $description;
00036 #$game =~ s/\s\(.*?\)//g;
00037
00038 print "INSERT INTO romdb VALUES ('" . $crc . "'," . '"' . $description . '"' . "," . '"' . $description . '"' . ",'" .
00039 $category . "','" . $year . "'," . '"' . $manufacturer . '"'. ",'" .
00040 "Unknown','" . "Unknown','MAME'," .
00041 $size . ",'','" . $date . "','" . $file . "');\n";
00042 return;
00043 }
00044
00045 foreach my $key (keys (%{$data->{game}}))
00046 {
00047
00048 next if ($data->{game}->{$key}->{isbios});
00049
00050 if ($data->{game}->{$key}->{driver}->{status} eq 'good')
00051 {
00052 $category="Players " . $data->{game}->{$key}->{input}->{players};
00053 }
00054 else
00055 {
00056 $category='Inperfect';
00057 }
00058
00059 if ($data->{game}->{$key}->{rom}->{crc})
00060 {
00061 insert_sql($data->{game}->{$key}->{rom}->{crc}, $data->{game}->{$key}->{description}, $category, $data->{game}->{$key}->{year},
00062 $data->{game}->{$key}->{manufacturer}, $data->{game}->{$key}->{rom}->{size}, $data->{game}->{$key}->{rom}->{name});
00063 }
00064 else
00065 {
00066 foreach my $rom (keys (%{$data->{game}->{$key}->{rom}}))
00067 {
00068 if ($data->{game}->{$key}->{rom}->{$rom}->{crc})
00069 {
00070 insert_sql($data->{game}->{$key}->{rom}->{$rom}->{crc}, $data->{game}->{$key}->{description},
00071 $category, $data->{game}->{$key}->{year}, $data->{game}->{$key}->{manufacturer},
00072 $data->{game}->{$key}->{rom}->{$rom}->{size}, $rom);
00073 }
00074 }
00075 }
00076 }