[pypy-svn] r55673 - pypy/dist/pypy/lang/gameboy

cami at codespeak.net cami at codespeak.net
Sun Jun 8 20:26:30 CEST 2008


Author: cami
Date: Sun Jun  8 20:26:27 2008
New Revision: 55673

Modified:
   pypy/dist/pypy/lang/gameboy/gameboy.py
Log:
added cpu interrupt call when write to interrupt or video


Modified: pypy/dist/pypy/lang/gameboy/gameboy.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/gameboy.py	(original)
+++ pypy/dist/pypy/lang/gameboy/gameboy.py	Sun Jun  8 20:26:27 2008
@@ -24,12 +24,12 @@
         self.create_gamboy_elements()
 
     def create_drivers(self):
-        self.clock         = Clock()
         self.joypad_driver = JoypadDriver()
         self.video_driver  = VideoDriver()
         self.sound_driver  = SoundDriver()
         
     def create_gamboy_elements(self): 
+        self.clock     = Clock()
         self.ram       = RAM()
         self.cartridge_manager = CartridgeManager(self.clock)
         self.interrupt = Interrupt()
@@ -128,6 +128,8 @@
             return
             raise Exception("invalid read address given")
         receiver.write(address, data)
+        if address == constants.STAT or address == 0xFFFF:
+            self.cpu.handle_interrupts()
 
     def read(self, address):
         receiver = self.get_receiver(address)
@@ -156,7 +158,7 @@
         elif 0xFE00 <= address <= 0xFEFF:
             self.print_receiver_msg(address, "video")
             return self.video
-        elif 0xFF00 <= address <= 0xFF00:
+        elif address == 0xFF00:
             self.print_receiver_msg(address, "joypad")
             return self.joypad
         elif 0xFF01 <= address <= 0xFF02:
@@ -165,7 +167,7 @@
         elif 0xFF04 <= address <= 0xFF07:
             self.print_receiver_msg(address, "timer")
             return self.timer
-        elif 0xFF0F <= address <= 0xFF0F:
+        elif address == 0xFF0F:
             self.print_receiver_msg(address, "interrupt")
             return self.interrupt
         elif 0xFF10 <= address <= 0xFF3F:
@@ -177,7 +179,7 @@
         elif 0xFF80 <= address <= 0xFFFE:
             self.print_receiver_msg(address, "ram")
             return self.ram
-        elif 0xFFFF <= address <= 0xFFFF:
+        elif address == 0xFFFF:
             self.print_receiver_msg(address, "interrupt")
             return self.interrupt
 



More information about the Pypy-commit mailing list