[pypy-svn] r62277 - in pypy/trunk/pypy/lang/gameboy: . test
tverwaes at codespeak.net
tverwaes at codespeak.net
Sat Feb 28 20:02:17 CET 2009
Author: tverwaes
Date: Sat Feb 28 20:02:11 2009
New Revision: 62277
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:
making it translate again. broken sprite drawing though
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 Sat Feb 28 20:02:11 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 Sat Feb 28 20:02:11 2009
@@ -139,7 +139,7 @@
#XXX remove those dumb helper "objects"
self.line = [0] * (SPRITE_SIZE + GAMEBOY_SCREEN_WIDTH + SPRITE_SIZE)
- self.objects = [0] * constants.OBJECTS_PER_LINE
+ self.objects = [None] * constants.OBJECTS_PER_LINE
self.palette = [0] * 1024
self.frames = 0
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 Sat Feb 28 20:02:11 2009
@@ -30,18 +30,25 @@
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_at(self, address, data):
+ actual = address % 4
+ if actual == 0:
+ self.extract_y_position(data)
+ if actual == 1:
+ self.extract_x_position(data)
+ if actual == 2:
+ self.extract_tile_number(data)
+ if actual == 3:
+ self.extract_attributes_and_flags(data)
+
+ def set_data(self, y_position, x_position, tile_number, attributes_and_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_position)
+ self.extract_x_position(x_position)
+ self.extract_tile_number(tile_number)
+ self.extract_attributes_and_flags(attributes_and_flags)
def extract_y_position(self, data):
"""
@@ -132,13 +139,13 @@
def get_draw_y(self, line_y):
return line_y - self.y + 2 * SPRITE_SIZE
- def get_draw_address_data(line_y):
- tile = sprite.tile_number
+ def get_draw_address_data(self, line_y):
+ tile = self.tile_number
if self.big_size:
tile &= 0xFE
tile_size = self.get_height() -1
y = self.get_draw_y(line_y)
- if sprite.y_flipped:
+ if self.y_flipped:
y = tile_size - y
return (tile << 4) + (y << 1)
More information about the Pypy-commit
mailing list