From b2cad8050e2077f09535607a829183a842023da7 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Fri, 22 Sep 2017 16:09:17 -0400 Subject: initial commit --- dumpgr.pl | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100755 dumpgr.pl (limited to 'dumpgr.pl') 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; + } +} -- cgit v1.2.3