--- M6502/Screen.pm 2007/07/30 21:00:36 33 +++ M6502/Screen.pm 2007/07/30 22:27:47 37 @@ -98,18 +98,28 @@ =cut +my $_vram_counter; + sub vram { my ( $self, $offset, $byte ) = @_; my $x = ( $offset % 32 ) << 3; my $y = $offset >> 5; my $mask = 1; + my $scale = $self->scale; - printf "## vram %04x %02x*%02x %02x\n", $offset, $x, $y, $byte if $self->trace; +# printf "## vram %04x %02x*%02x %02x\n", $offset, $x, $y, $byte if $self->trace; foreach ( 0 .. 7 ) { - p($x + $_, $y, $byte & $mask ); + my $on = $byte & $mask; + if ( $scale == 1 ) { + $app->pixel( $x + $_, $y, $on ? $white : $black ); + } else { + $self->p($x + $_, $y, $on ); + } $mask = $mask << 1; } + + $app->sync if ( $_vram_counter++ % 10 == 0 ); } =head2 mmap_pixel