[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