aboutsummaryrefslogtreecommitdiff
path: root/dumpfont.pl
diff options
context:
space:
mode:
Diffstat (limited to 'dumpfont.pl')
-rwxr-xr-xdumpfont.pl35
1 files changed, 35 insertions, 0 deletions
diff --git a/dumpfont.pl b/dumpfont.pl
new file mode 100755
index 0000000..2d2e448
--- /dev/null
+++ b/dumpfont.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl -w
+
+use bytes;
+
+# dump rom as 4-color bitmap, each byte is 4 pixels wide
+$/ = \1;
+$addr = 0x8000;
+#@chars = (" ", "X", "o", ".");
+@chars = ("\x1b[30;40m ", "\x1b[30;42m ", "\x1b[30;41m ", "\x1b[30;47m ");
+
+$start = hex(shift) || 0x950a;
+$end = hex(shift) || 0x9641;
+@ARGV="defender.rom" unless @ARGV;
+
+my $pos = 0;
+my $count = 0;
+while(<>) {
+ my $str = "";
+ my @pairs;
+ my $byte = ord($_);
+ my $tmp = $byte;
+ for(my $i = 0; $i < 4; $i++) {
+ my $pixel = $tmp & 3;
+ $str = $chars[$pixel] . $str;
+ $str = $chars[$pixel] . $str;
+ $tmp >>= 2;
+ }
+ $str .= "\x1b[0m";
+ if($addr >= $start && $addr <= $end) {
+ printf "%04x: %02x |%s|\n", $addr, $byte, $str;
+ $count++;
+ print ("\n"), $count = 0 if $count == 8;
+ }
+ $addr++;
+}