--- M6502/Screen.pm 2007/08/02 18:01:51 103 +++ M6502/Screen.pm 2007/08/03 08:44:45 106 @@ -12,6 +12,7 @@ use Carp qw/confess/; use Data::Dump qw/dump/; +use M6502 qw'@mem'; use base qw(Class::Accessor Prefs); __PACKAGE__->mk_accessors(qw(app event)); @@ -117,6 +118,9 @@ my $_vram_counter; sub vram { + + return; + my ( $self, $offset, $byte ) = @_; my $x = ( $offset % 32 ) << 3; my $y = $offset >> 5; @@ -187,8 +191,13 @@ sub render { my $self = shift; + return unless $self->booted; + die "this function isn't supported if scale isn't 1" unless $self->scale == 1; + confess "no data?" unless (@_); + confess "screen size not 256*256/8 but ",($#_+1) unless (($#_+1) == (256*256/8)); + my $pixels = pack("C*", @_); my $vram = SDL::Surface->new( @@ -318,6 +327,7 @@ while ( 1 ) { $self->key_pressed( 1 ); M6502::exec($run_for); + $self->render( @mem[ 0x6000 .. 0x7fff ] ); } }