/[VRac]/Galeb.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /Galeb.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 174 by dpavlin, Mon Aug 6 18:17:12 2007 UTC revision 214 by dpavlin, Tue Apr 15 13:03:19 2008 UTC
# Line 43  our $emu; Line 43  our $emu;
43  sub run {  sub run {
44          my $self = shift;          my $self = shift;
45    
46            M6502::reset();
47    
48          warn "Galeb calling upstream init\n";          warn "Galeb calling upstream init\n";
49          $self->SUPER::init(          $self->SUPER::init(
50                  read => sub { $self->read( @_ ) },                  read => sub { $self->read( @_ ) },
# Line 51  sub run { Line 53  sub run {
53    
54          warn "Galeb $Galeb::VERSION emulation starting\n";          warn "Galeb $Galeb::VERSION emulation starting\n";
55    
56          $self->scale( 2 );  #       $self->scale( 2 );
57          $self->show_mem( 1 );          $self->show_mem( 1 );
58          $self->load_session( 'sess/current' );          $self->load_session( 'sess/current' );
59    
# Line 70  sub run { Line 72  sub run {
72    
73          $emu = $self;          $emu = $self;
74    
75          my ( $trace, $debug ) = ( $self->trace, $self->debug );  #       $self->trace( 1 );
76          $self->trace( 0 );  #       $self->debug( 1 );
         $self->debug( 0 );  
77    
78          warn "rendering memory\n";          warn "rendering memory\n";
79          $self->render_mem( @mem );          $self->render_mem( @mem );
80    
         M6502::reset();  
   
81          $self->loop( sub {          $self->loop( sub {
82                  my $run_for = shift;                  my $run_for = shift;
83                  warn sprintf("about to exec from PC %04x for %d cycles\n", $PC, $run_for) if $self->trace;                  warn sprintf("about to exec from PC %04x for %d cycles\n", $PC, $run_for) if $self->trace;
# Line 182  Render one frame of video ram Line 181  Render one frame of video ram
181    
182  =cut  =cut
183    
184    my $char_rom = 'rom/Galeb/CHRGEN.rom';
185    
186    # flip, invert
187    my @chars = map { $flip[ ord($_) ] ^ 0xff } split(//, read_file( $char_rom ));
188    warn "loaded ", $#chars, " characters from $char_rom\n";
189    
190  my $last_dump = '';  my $last_dump = '';
191    
192    my $x_size = 48;
193    my $y_size = 16;
194    my $c_h = 8;
195    
196    sub screen_width { $x_size * 8 }
197    sub screen_height { $y_size * $c_h }
198    
199  sub render_vram {  sub render_vram {
200          my $self = shift;          my $self = shift;
201    
# Line 191  sub render_vram { Line 203  sub render_vram {
203    
204          my $dump;          my $dump;
205    
206          for my $y ( 0 .. 15 ) {          my @pixels = ("\x00") x ( $x_size * $y_size * 8 );
207    
208            for my $y ( 0 .. $y_size - 1 ) {
209                  $dump .= sprintf "%2d: %s\n",$y, join('', map { chr( $_ ) } @mem[ $addr+15 .. $addr+62 ] );                  $dump .= sprintf "%2d: %s\n",$y, join('', map { chr( $_ ) } @mem[ $addr+15 .. $addr+62 ] );
210    
211                    foreach my $x ( 0 .. $x_size - 1 ) {
212                            my $c = $mem[ $addr + 15 + $x ];
213                            my $l = $x_size * $c_h;
214                            foreach my $o ( 0 .. $c_h - 1 ) {
215                                    $pixels[ ( $y * $l ) + $x + ( $o * $x_size ) ] = $chars[ ( $c * $c_h ) + $o ];
216                            }
217                    }
218    
219                  $addr += 64;                  $addr += 64;
220          }          }
221    
222          if ( $dump ne $last_dump ) {          if ( $dump ne $last_dump ) {
223                  print $dump;  #               print $dump;
224                  $last_dump = $dump;                  $last_dump = $dump;
225    
226                    my $vram = SDL::Surface->new(
227                            -width => $x_size * 8,
228                            -height => $y_size * $c_h,
229                            -depth => 1,            # 1 bit per pixel
230                            -pitch => $x_size,      # bytes per line
231                            -from => pack("C*", @pixels),
232                    );
233                    $vram->set_colors( 0, $white, $black );
234    
235                    $self->render_frame( $vram );
236          }          }
237  }  }
238    

Legend:
Removed from v.174  
changed lines
  Added in v.214

  ViewVC Help
Powered by ViewVC 1.1.26