[pypy-svn] r62417 - in pypy/trunk/pypy/lang/gameboy: . test

cami at codespeak.net cami at codespeak.net
Mon Mar 2 18:20:09 CET 2009


Author: cami
Date: Mon Mar  2 18:20:08 2009
New Revision: 62417

Modified:
   pypy/trunk/pypy/lang/gameboy/test/test_video.py
   pypy/trunk/pypy/lang/gameboy/video.py
   pypy/trunk/pypy/lang/gameboy/video_register.py
   pypy/trunk/pypy/lang/gameboy/video_sprite.py
Log:
rewrote var big_sprite_size_selected to big_sprites


Modified: pypy/trunk/pypy/lang/gameboy/test/test_video.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/test/test_video.py	(original)
+++ pypy/trunk/pypy/lang/gameboy/test/test_video.py	Mon Mar  2 18:20:08 2009
@@ -50,7 +50,7 @@
     assert len(video.vram) == constants.VRAM_SIZE
     assert len(video.oam) == constants.OAM_SIZE
     assert len(video.line) == 176
-    assert len(video.objects) == constants.OBJECTS_PER_LINE
+    assert len(video.objects) == constants.big_sprites
     assert len(video.palette) == 1024
     assert video.frames == 0
     assert video.frame_skip == 0

Modified: pypy/trunk/pypy/lang/gameboy/video.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/video.py	(original)
+++ pypy/trunk/pypy/lang/gameboy/video.py	Mon Mar  2 18:20:08 2009
@@ -100,6 +100,10 @@
             
     def update_sprite(self, address, data):
         self.get_sprite(address).set_data_at(address, data)
+        
+    def update_sprite_size(self):
+        for sprite in self.sprites:
+            sprite.big_size = self.control.big_sprites 
        
     def get_sprite(self, address):
         address -= constants.OAM_ADDR

Modified: pypy/trunk/pypy/lang/gameboy/video_register.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/video_register.py	(original)
+++ pypy/trunk/pypy/lang/gameboy/video_register.py	Mon Mar  2 18:20:08 2009
@@ -96,7 +96,7 @@
         self.window.enabled                           = False
         self.background_and_window_lower_tile_data_selected  = True
         self.background.upper_tile_map_selected       = False
-        self.big_sprite_size_selected                 = False
+        self.big_sprites                              = False
         self.sprites_enabled                          = False
         self.background.enabled                       = True
         
@@ -107,7 +107,7 @@
         value += int(self.window.enabled)                     << 5
         value += int(self.background_and_window_lower_tile_data_selected)  << 4
         value += int(self.background.upper_tile_map_selected) << 3
-        value += int(self.big_sprite_size_selected)           << 2
+        value += int(self.big_sprites)                        << 2
         value += int(self.sprites_enabled)                    << 1
         value += int(self.background.enabled)                 << 0
         return value
@@ -126,9 +126,10 @@
             self.video.clear_frame()
         
     def write(self, value):
+        previous_big_sprites = self.big_sprites
         if self.lcd_enabled != bool(value & (1 << 7)):
             self.switch_lcd_enabled()
-
+            
         was_enabled         = self.window.enabled
         self.window.enabled = bool(value & (1 << 5))
         if not was_enabled and self.window.enabled:
@@ -138,9 +139,12 @@
         self.background_and_window_lower_tile_data_selected = \
                                                        bool(value & (1 << 4))
         self.background.upper_tile_map_selected      = bool(value & (1 << 3))
-        self.big_sprite_size_selected                = bool(value & (1 << 2))
+        self.big_sprites                             = bool(value & (1 << 2))
         self.sprites_enabled                         = bool(value & (1 << 1))
         self.background.enabled                      = bool(value & (1 << 0))
+
+        if previous_big_sprites != self.big_sprites:
+            video.update_sprite_size()
         
     def get_selected_tile_data_space(self):
         if self.background_and_window_lower_tile_data_selected:

Modified: pypy/trunk/pypy/lang/gameboy/video_sprite.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/video_sprite.py	(original)
+++ pypy/trunk/pypy/lang/gameboy/video_sprite.py	Mon Mar  2 18:20:08 2009
@@ -130,15 +130,15 @@
         else:
             return SPRITE_SIZE
          
-    def get_tile_size(self, video):
-         if video.control.big_sprite_size_selected:
+    def get_tile_size(self):
+         if self.big_size:
             return 15
          else:
             return 7
         
     def intersects_current_line(self, video):
         y = self.current_line_y(video)
-        return y >= 0 and y <= self.get_tile_size(video)
+        return y >= 0 and y <= self.get_tile_size()
     
     def is_shown_on_current_line(self, video):
         return not self.hidden and self.intersects_current_line(video)
@@ -147,7 +147,7 @@
         return video.line_y - self.y + 2 * SPRITE_SIZE
     
     def get_tile(self, video):
-        if video.control.big_sprite_size_selected:
+        if video.control.big_sprites:
              return self.get_tile_number() & 0xFE
         else:
             return self.get_tile_number()
@@ -158,7 +158,7 @@
     def get_draw_y(self, video):
         y = self.current_line_y(video)
         if self.y_flipped:
-            y = self.get_tile_size(video) - y
+            y = self.get_tile_size() - y
         return y
                 
     def draw(self, video):



More information about the Pypy-commit mailing list