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

tverwaes at codespeak.net tverwaes at codespeak.net
Mon Mar 2 16:13:32 CET 2009


Author: tverwaes
Date: Mon Mar  2 16:13:28 2009
New Revision: 62398

Modified:
   pypy/trunk/pypy/lang/gameboy/test/test_video_sprite.py
   pypy/trunk/pypy/lang/gameboy/video.py
   pypy/trunk/pypy/lang/gameboy/video_sprite.py
Log:
fixed bugs


Modified: pypy/trunk/pypy/lang/gameboy/test/test_video_sprite.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/test/test_video_sprite.py	(original)
+++ pypy/trunk/pypy/lang/gameboy/test/test_video_sprite.py	Mon Mar  2 16:13:28 2009
@@ -57,19 +57,19 @@
 def test_video_sprite_read_write():
     sprite = get_sprite()
     for i in range(0xFF):
-        sprite.set_data(byte0=i)
+        sprite.set_data_at(0, i)
         assert sprite.get_data()[0] == i
         
     for i in range(0xFF):
-        sprite.set_data(byte1=i)
+        sprite.set_data_at(1, i)
         assert sprite.get_data()[1] == i
         
     for i in range(0xFF):
-        sprite.set_data(byte2=i)
+        sprite.set_data_at(2, i)
         assert sprite.get_data()[2] == i
         
     for i in range(0xFF):
-        sprite.set_data(byte3=i)
+        sprite.set_data_at(3, i)
         assert sprite.get_data()[3] == i
         
 def test_size():

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 16:13:28 2009
@@ -90,16 +90,7 @@
                                      self.oam[address + 3])
             
     def update_sprite(self, address, data):
-        # TODO: TEST!
-        # XXX why cant I use None here
-        #       (because None == 0 in C?)
-        attribute = [-1] * 4
-        # assign the data to the correct attribute
-        attribute[address % 4] = data
-        self.get_sprite(address).set_data(attribute[0],
-                                          attribute[1],
-                                          attribute[2],
-                                          attribute[3])
+        self.get_sprite(address).set_data_at(address, data)
        
     def get_sprite(self, address):
         address -= constants.OAM_ADDR

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 16:13:28 2009
@@ -30,18 +30,28 @@
     def get_data(self):
         return [self.y, self.x, self.tile_number, self.get_attributes_and_flags()]
 
-    def set_data(self, byte0=-1, byte1=-1, byte2=-1, byte3=-1):
+    def set_data(self, y, x, tile_number, flags):
         """
         extracts the sprite data from an oam entry
         """
-        if byte0 is not -1:
-            self.extract_y_position(byte0)
-        if byte1 is not -1:
-            self.extract_x_position(byte1)
-        if byte2 is not -1:
-            self.extract_tile_number(byte2)
-        if byte3 is not -1:
-            self.extract_attributes_and_flags(byte3)
+        self.extract_y_position(y)
+        self.extract_x_position(x)
+        self.extract_tile_number(tile_number)
+        self.extract_attributes_and_flags(flags)
+
+    def set_data_at(self, address, data):
+        """
+        extracts the sprite data from an oam entry
+        """
+        position = address % 4
+        if position == 0:
+            self.extract_y_position(data)
+        if position == 1:
+            self.extract_x_position(data)
+        if position == 2:
+            self.extract_tile_number(data)
+        if position == 3:
+            self.extract_attributes_and_flags(data)
         
     def extract_y_position(self, data):
         """



More information about the Pypy-commit mailing list