aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--renderlevels.pl21
1 files changed, 19 insertions, 2 deletions
diff --git a/renderlevels.pl b/renderlevels.pl
index e967991..6373030 100644
--- a/renderlevels.pl
+++ b/renderlevels.pl
@@ -6,7 +6,7 @@
# this code won't win any beauty contests, but it does work.
-$verbose = 0; # 0 = quiet, 2 = very chatty
+$verbose = 2; # 0 = quiet, 2 = very chatty
$black_is_white = 0; # 1 = draw all-black shapes in white. only affects
# level09.png (the bombs are invisible there).
@@ -37,7 +37,9 @@ sub getdelta {
sub draw {
my ($img, $shape, $dx, $dy, $xpos, $ypos, $copies) = @_;
- warn sprintf "drawing shape %04x at $xpos, $ypos, $copies copies, delta ($dx, $dy)\n", $shape if $verbose > 1;
+ my $shaddr = sprintf("%04x", $shape);
+ my $shname = $shapes{$shaddr} || "???";
+ warn sprintf "drawing shape $shname ($shaddr) at %02x,%02x copies $copies, delta ($dx, $dy)\n", $xpos, $ypos if $verbose > 1;
my $white = 0;
if($black_is_white && ($shape == 0x9c89 || $shape == 0x9ceb || $shape == 0x9c49)) {
warn "drawing all-black shape in white\n";
@@ -65,6 +67,21 @@ sub draw {
}
}
+#main()
+open I, "<main.info" or die $!;
+while(<I>) {
+ next unless /^label\s+{\s+name\s+"(sh_\w+)".*addr\s+\$([0-9a-fA-F]+);/;
+ $shapes{lc $2} = $1;
+}
+close I;
+
+if($verbose > 1) {
+ print "addr shape\n";
+ for(sort keys %shapes) {
+ print "$_ $shapes{$_}\n";
+ }
+}
+
open ROM, "<jumpmanjr.rom" or die $!;
if((read ROM, $rom, 0x4000, 0x8000) != 0x4000) {
die "couldn't read ROM\n";