/[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 188 by dpavlin, Sun Sep 30 20:05:20 2007 UTC
# Line 51  sub run { Line 51  sub run {
51    
52          warn "Galeb $Galeb::VERSION emulation starting\n";          warn "Galeb $Galeb::VERSION emulation starting\n";
53    
54          $self->scale( 2 );  #       $self->scale( 2 );
55          $self->show_mem( 1 );          $self->show_mem( 1 );
56          $self->load_session( 'sess/current' );          $self->load_session( 'sess/current' );
57    
# Line 70  sub run { Line 70  sub run {
70    
71          $emu = $self;          $emu = $self;
72    
73          my ( $trace, $debug ) = ( $self->trace, $self->debug );  #       $self->trace( 1 );
74          $self->trace( 0 );  #       $self->debug( 1 );
         $self->debug( 0 );  
75    
76          warn "rendering memory\n";          warn "rendering memory\n";
77          $self->render_mem( @mem );          $self->render_mem( @mem );
# 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    my @chars = map { ord($_) } split(//, read_file( $char_rom ));
187    warn "loaded ", $#chars, " characters from $char_rom\n";
188    
189  my $last_dump = '';  my $last_dump = '';
190    
191    my $x_size = 48;
192    my $y_size = 16;
193    my $c_h = 8;
194    
195    sub screen_width { $x_size * 8 }
196    sub screen_height { $y_size * $c_h }
197    
198  sub render_vram {  sub render_vram {
199          my $self = shift;          my $self = shift;
200    
# Line 191  sub render_vram { Line 202  sub render_vram {
202    
203          my $dump;          my $dump;
204    
205          for my $y ( 0 .. 15 ) {          my @pixels = ("\x00") x ( $x_size * $y_size * 8 );
206    
207            for my $y ( 0 .. $y_size - 1 ) {
208                  $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 ] );
209    
210                    foreach my $x ( 0 .. $x_size - 1 ) {
211                            my $c = $mem[ $addr + 15 + $x ];
212                            my $l = $x_size * $c_h;
213                            foreach my $o ( 0 .. $c_h - 1 ) {
214                                    $pixels[ ( $y * $l ) + $x + ( $o * $x_size ) ] = $chars[ ( $c * $c_h ) + $o ];
215                            }
216                    }
217    
218                  $addr += 64;                  $addr += 64;
219          }          }
220    
221          if ( $dump ne $last_dump ) {          if ( $dump ne $last_dump ) {
222                  print $dump;  #               print $dump;
223                  $last_dump = $dump;                  $last_dump = $dump;
224    
225                    my $vram = SDL::Surface->new(
226                            -width => $x_size * 8,
227                            -height => $y_size * $c_h,
228                            -depth => 1,            # 1 bit per pixel
229                            -pitch => $x_size,      # bytes per line
230                            -from => pack("C*", @pixels),
231                    );
232                    $vram->set_colors( 0, $white, $black );
233    
234                    $self->render_frame( $vram );
235          }          }
236  }  }
237    

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

  ViewVC Help
Powered by ViewVC 1.1.26