#!/usr/bin/perl sub pick { local ($x, $y) = @_; my $i = $x+$y*$X; return ((hex $p[$i >> 3]) >> ($i & 7)) & 1; } while (<>) { chop; if (/#define\s+\S+_width\s+(\d+)/) { $X = $1; next; } if (/#define\s+\S+_height\s+(\d+)/) { $Y = $1; next; } next unless /\s*0x/; s/^\s*//; s/(,|};)$//; push(@p, split /,/); } for ($x = 0; $x != $X; $x++) { for ($y = 0; $y != $Y; $y += 8) { $v = 0; for ($i = 0; $i != 8; $i++) { $v |= 1 << $i if &pick($x, $y+$i); } print sprintf("0x%02x, ", $v); } } print "\n";