diff options
author | B. Watson <yalhcru@gmail.com> | 2017-09-22 16:09:17 -0400 |
---|---|---|
committer | B. Watson <yalhcru@gmail.com> | 2017-09-22 16:09:17 -0400 |
commit | b2cad8050e2077f09535607a829183a842023da7 (patch) | |
tree | 1f51d630c7596355b023a8cb4583fe46e3d066a7 /dumpgr.pl | |
download | defender-b2cad8050e2077f09535607a829183a842023da7.tar.gz |
initial commit
Diffstat (limited to 'dumpgr.pl')
-rwxr-xr-x | dumpgr.pl | 35 |
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; + } +} |