[pypy-svn] r61552 - pypy/trunk/pypy/lang/gameboy

cami at codespeak.net cami at codespeak.net
Wed Feb 4 22:33:31 CET 2009


Author: cami
Date: Wed Feb  4 22:33:28 2009
New Revision: 61552

Modified:
   pypy/trunk/pypy/lang/gameboy/gameboy_implementation.py
Log:
added switch for using RSDL or not


Modified: pypy/trunk/pypy/lang/gameboy/gameboy_implementation.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/gameboy_implementation.py	(original)
+++ pypy/trunk/pypy/lang/gameboy/gameboy_implementation.py	Wed Feb  4 22:33:28 2009
@@ -7,8 +7,10 @@
 from pypy.lang.gameboy.timer import Clock
 from pypy.lang.gameboy import constants
 
-from pypy.rlib.rsdl import RSDL, RSDL_helper
-from pypy.rpython.lltypesystem import lltype, rffi
+use_rsdl = False
+if use_rsdl:
+    from pypy.rlib.rsdl import RSDL, RSDL_helper
+    from pypy.rpython.lltypesystem import lltype, rffi
 from pypy.rlib.objectmodel import specialize
 import time
 
@@ -19,7 +21,8 @@
     def __init__(self):
         GameBoy.__init__(self)
         self.is_running = False
-        self.init_sdl()
+        if use_rsdl:
+            self.init_sdl()
         
     def init_sdl(self):
         assert RSDL.Init(RSDL.INIT_VIDEO) >= 0
@@ -45,24 +48,31 @@
     def emulate_cycle(self):
         self.handle_events()
         self.emulate(constants.GAMEBOY_CLOCK >> 2)
-        RSDL.Delay(1)
+        if use_rsdl:
+            RSDL.Delay(1)
     
     def handle_execution_error(self, error): 
-        lltype.free(self.event, flavor='raw')
-        RSDL.Quit()
+        if use_rsdl:
+            lltype.free(self.event, flavor='raw')
+            RSDL.Quit()
     
     def handle_events(self):
-        self.poll_event()
-        if self.check_for_escape():
-            self.is_running = False 
-        self.joypad_driver.update(self.event)
+        if use_rsdl:
+            self.poll_event()
+            if self.check_for_escape():
+                self.is_running = False 
+            self.joypad_driver.update(self.event)
     
     
     def poll_event(self):
-        ok = rffi.cast(lltype.Signed, RSDL.PollEvent(self.event))
-        return ok > 0
+        if use_rsdl:
+            ok = rffi.cast(lltype.Signed, RSDL.PollEvent(self.event))
+            return ok > 0
+        else:
+            return True
              
     def check_for_escape(self):
+        if not use_rsdl: return False
         c_type = rffi.getintfield(self.event, 'c_type')
         if c_type == RSDL.KEYDOWN:
             p = rffi.cast(RSDL.KeyboardEventPtr, self.event)
@@ -77,18 +87,17 @@
     
     COLOR_MAP = [0xFFFFFF, 0xCCCCCC, 0x666666, 0x000000]
     
-    def __init__(self, use_rsdl=False):
+    def __init__(self):
         VideoDriver.__init__(self)
-        self.use_rsdl = use_rsdl
         self.create_screen()
         self.map = []
     
     def create_screen(self):
-        if self.use_rsdl:
+        if use_rsdl:
             self.screen = RSDL.SetVideoMode(self.width, self.height, 32, 0)
         
     def update_display(self):
-        if self.use_rsdl:
+        if use_rsdl:
             RSDL.LockSurface(self.screen)
             self.draw_pixels()
             RSDL.UnlockSurface(self.screen)
@@ -101,7 +110,7 @@
         for y in range(self.height):
             str += "\n"
             for x in range(self.width):
-                color = COLOR_MAP[self.get_pixel_color(x, y)]
+                color = VideoDriverImplementation.COLOR_MAP[self.get_pixel_color(x, y)]
                 RSDL_helper.set_pixel(self.screen, x, y, color)
         
     def draw_ascii_pixels(self):
@@ -136,6 +145,7 @@
         self.last_key = 0
         
     def update(self, event):
+        if not use_rsdl: return 
         # fetch the event from sdl
         type = rffi.getintfield(event, 'c_type')
         if type == RSDL.KEYDOWN:
@@ -144,11 +154,11 @@
         elif type == RSDL.KEYUP:
             self.create_called_key(event)
             self.on_key_up()
-        pass
     
     def create_called_key(self, event):
-        p = rffi.cast(RSDL.KeyboardEventPtr, event)
-        self.last_key = rffi.getintfield(p.c_keysym, 'c_sym')
+        if use_rsdl: 
+            p = rffi.cast(RSDL.KeyboardEventPtr, event)
+            self.last_key = rffi.getintfield(p.c_keysym, 'c_sym')
         
     def on_key_down(self):
         self.toggleButton(self.get_button_handler(self.last_key), True)
@@ -161,6 +171,7 @@
             pressButtonFunction(self, enabled)
     
     def get_button_handler(self, key):
+        if not use_rsdl: return None
         if key == RSDL.K_UP:
             return JoypadDriver.button_up
         elif key == RSDL.K_RIGHT: 



More information about the Pypy-commit mailing list