[pypy-svn] r58159 - in pypy/dist/pypy/lang/gameboy: . test
cami at codespeak.net
cami at codespeak.net
Sun Sep 14 19:34:53 CEST 2008
Author: cami
Date: Sun Sep 14 19:34:51 2008
New Revision: 58159
Added:
pypy/dist/pypy/lang/gameboy/test/test_video_sprite.py
Modified:
pypy/dist/pypy/lang/gameboy/video.py
Log:
added sprite tests
Added: pypy/dist/pypy/lang/gameboy/test/test_video_sprite.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/lang/gameboy/test/test_video_sprite.py Sun Sep 14 19:34:51 2008
@@ -0,0 +1,86 @@
+from pypy.lang.gameboy import constants
+from pypy.lang.gameboy.video import Sprite
+from pypy.lang.gameboy.video import Video
+from pypy.lang.gameboy.test.test_video import get_video
+import py
+
+
+
+def get_sprite():
+ return Sprite(get_video())
+
+
+# Sprite Class test ------------------------------------------------------------
+
+def test_standard_values(sprite=None):
+ if sprite==None:
+ sprite = get_sprite()
+ #assert sprite.get_tile_number() == 0
+ assert sprite.x == 0
+ assert sprite.y == 0
+ assert sprite.object_behind_background == False
+ assert sprite.x_flipped == False
+ assert sprite.y_flipped == False
+ assert sprite.palette_number == 0
+
+
+def test_reset():
+ sprite = get_sprite()
+
+ # sprite.set_tile_number(0x12)
+ # assert sprite.get_tile_number() == 0x12
+
+ # sprite.set_tile_number(0xFFF)
+ # assert sprite.get_tile_number() == 0xFF
+
+ sprite.x = 10
+ assert sprite.x == 10
+
+ sprite.y = 11
+ assert sprite.y == 11
+
+ sprite.object_behind_background = True
+ assert sprite.object_behind_background == True
+
+ sprite.x_flipped = True
+ assert sprite.x_flipped == True
+
+ sprite.y_flipped = True
+ assert sprite.y_flipped == True
+
+ sprite.use_object_pallette_1 = True
+ assert sprite.use_object_pallette_1 == True
+
+ sprite.reset()
+ test_standard_values(sprite)
+
+def test_size():
+ sprite = get_sprite()
+ sprite.big_size = False
+ assert sprite.get_width() == 8
+ assert sprite.get_height() == 8
+
+ sprite.big_size = True
+ assert sprite.get_width() == 8
+ assert sprite.get_height() == 16
+
+
+def test_intersects_line_normal_size():
+ sprite = get_sprite()
+ sprite.big_size = False
+ sprite.y = 1
+ line_intersection_test(sprite, 8)
+
+def test_intersects_line_big_size():
+ sprite = get_sprite()
+ sprite.big_size = True
+ sprite.y = 1
+ line_intersection_test(sprite, 16)
+
+def line_intersection_test(sprite, height):
+ assert not sprite.intersects_line(0)
+ for i in range(height):
+ assert sprite.intersects_line(i+1)
+ assert not sprite.intersects_line(height+2)
+
+# test sprite in video ---------------------------------------------------------
Modified: pypy/dist/pypy/lang/gameboy/video.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/video.py (original)
+++ pypy/dist/pypy/lang/gameboy/video.py Sun Sep 14 19:34:51 2008
@@ -468,8 +468,6 @@
Bit6 Y flip (0=Normal, 1=Vertically mirrored)
Bit5 X flip (0=Normal, 1=Horizontally mirrored)
Bit4 Palette number **Non CGB Mode Only** (0=OBP0, 1=OBP1)
- Bit3 Tile VRAM-Bank **CGB Mode Only** (0=Bank 0, 1=Bank 1)
- Bit2-0 Palette number **CGB Mode Only** (OBP0-7)
"""
self.object_behind_background = bool(data & (1 << 7))
self.x_flipped = bool(data & (1 << 6))
@@ -487,6 +485,9 @@
def get_tile_number(self):
return self.tile.id
+
+ def set_tile_number(self, tile_number):
+ self.tile = self.video.tiles[tile_number]
def get_width(self):
return 8
@@ -501,7 +502,7 @@
return False
def intersects_line(self, line):
- return False
+ return line >= self.y and line <= self.y + self.get_height()
def draw(self):
pass
@@ -628,8 +629,9 @@
def create_tile_maps(self):
# create the maxumal possible sprites
+ self.tile_map_0 = [None] * 32 * 32
self.tile_map_1 = [None] * 32 * 32
- self.tile_map_2 = [None] * 32 * 32
+ self.tile_maps = [self.tile_map_0, self.tile_map_1]
def update_tile(self, address, data):
# XXX to implement
More information about the Pypy-commit
mailing list