aboutsummaryrefslogtreecommitdiff
path: root/dumpgr.pl
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2017-09-22 16:09:17 -0400
committerB. Watson <yalhcru@gmail.com>2017-09-22 16:09:17 -0400
commitb2cad8050e2077f09535607a829183a842023da7 (patch)
tree1f51d630c7596355b023a8cb4583fe46e3d066a7 /dumpgr.pl
downloaddefender-b2cad8050e2077f09535607a829183a842023da7.tar.gz
initial commit
Diffstat (limited to 'dumpgr.pl')
-rwxr-xr-xdumpgr.pl35
1 files changed, 35 insertions, 0 deletions
diff --git a/dumpgr.pl b/dumpgr.pl
new file mode 100755
index 0000000..c382c51
--- /dev/null
+++ b/dumpgr.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl -w
+
+use bytes;
+
+# dump rom as 4-color bitmap, each byte is 4 pixels wide
+$startaddr = 0x8000;
+#@chars = (" ", "X", "o", ".");
+@chars = ("\x1b[30;40m ", "\x1b[30;42m ", "\x1b[30;41m ", "\x1b[30;47m ");
+
+$start = hex(shift) || 0xa8b3;
+$end = hex(shift) || 0xaa72;
+@ARGV="defender.rom" unless @ARGV;
+
+undef $/;
+$data = <>;
+@bytes = split "", $data;
+
+for($addr = $start; $addr < $end; $addr += 2) {
+ my $str = "";
+ my $pos = $addr - $startaddr;
+ my $word = ord($bytes[$pos + 1]) + 256 * ord($bytes[$pos]);
+ my $tmp = $word;
+ for(my $i = 0; $i < 8; $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: %04x |%s|\n", $addr, $word, $str;
+ $count++;
+ print ("\n"), $count = 0 if $count == 8;
+ }
+}