[pypy-svn] r55651 - in pypy/dist/pypy/lang/gameboy: . test

cami at codespeak.net cami at codespeak.net
Sat Jun 7 14:48:45 CEST 2008


Author: cami
Date: Sat Jun  7 14:48:43 2008
New Revision: 55651

Modified:
   pypy/dist/pypy/lang/gameboy/joypad.py
   pypy/dist/pypy/lang/gameboy/test/test_cartridge.py
   pypy/dist/pypy/lang/gameboy/test/test_joypad.py
Log:
fixed bug in joypad, returned value was incorrect


Modified: pypy/dist/pypy/lang/gameboy/joypad.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/joypad.py	(original)
+++ pypy/dist/pypy/lang/gameboy/joypad.py	Sat Jun  7 14:48:43 2008
@@ -18,9 +18,9 @@
         self.reset()
 
     def reset(self):
-        self.joyp = 0xF
-        self.button_code = 0xF
-        self.cycles = constants.JOYPAD_CLOCK
+        self.read_control = 0xF
+        self.button_code  = 0xF
+        self.cycles       = constants.JOYPAD_CLOCK
 
     def get_cycles(self):
         return self.cycles
@@ -34,21 +34,21 @@
 
     def write(self, address, data):
         if address == constants.JOYP:
-            self.joyp = (self.joyp & 0xC) + (data & 0x3)
+            self.read_control = (self.read_control & 0xC) + ((data & 0x30)>>4)
             self.update()
 
     def read(self, address):
         if address == constants.JOYP:
-            return (self.joyp << 4) + self.button_code
+            return (self.read_control << 4) + self.button_code
         return 0xFF
 
     def update(self):
         oldButtons = self.button_code
-        if self.joyp & 0xF0 == 0x10:
+        if self.read_control & 0x3 == 1:
             self.button_code = self.driver.get_button_code()
-        elif self.joyp & 0xF0 == 0x20:
+        elif self.read_control & 0x3 == 2:
             self.button_code = self.driver.get_direction_code()
-        else:
+        elif self.read_control & 0x3 == 3:
             self.button_code  = 0xF
         if oldButtons != self.button_code:
             self.interrupt.raise_interrupt(constants.JOYPAD)

Modified: pypy/dist/pypy/lang/gameboy/test/test_cartridge.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/test/test_cartridge.py	(original)
+++ pypy/dist/pypy/lang/gameboy/test/test_cartridge.py	Sat Jun  7 14:48:43 2008
@@ -18,7 +18,7 @@
 def get_cartridge_managers():
     pass
 
-def get_cartridge():
+def get_cartridge_file():
     ctrg = CartridgeFile()
     return ctrg
 
@@ -41,63 +41,63 @@
 
 # STORE MANAGER TEST -----------------------------------------------------------
 
-def test_cartridge_init(): 
-    cartridge = get_cartridge()
+def test_cartridge_file_init(): 
+    cartridge_file = get_cartridge_file()
     
-    assert cartridge.cartridge_name is ""
-    assert cartridge.cartridge_stream is None
-    assert cartridge.cartridge_file_contents is None
+    assert cartridge_file.cartridge_name is ""
+    assert cartridge_file.cartridge_stream is None
+    assert cartridge_file.cartridge_file_contents is None
     
-    assert cartridge.battery_name is ""
-    assert cartridge.battery_stream is None
-    assert cartridge.battery_file_contents is None
+    assert cartridge_file.battery_name is ""
+    assert cartridge_file.battery_stream is None
+    assert cartridge_file.battery_file_contents is None
     
 
-def rest_cartridge_load():
-    cartridge = get_cartridge()
+def test_cartridge_file_load():
+    cartridge_file = get_cartridge_file()
     romName = "rom1.raw"
     romFilePath = ROM_PATH+"/rom1/"+romName
     
-    cartridge.load(romFilePath)
-    #assert cartridge.cartridge_name == romName
-    assert cartridge.cartridge_file_path == romFilePath
+    cartridge_file.load(romFilePath)
+    #assert cartridge_file.cartridge_name     == romName
+    assert cartridge_file.cartridge_file_path == romFilePath
     
-    assert cartridge.battery_name == romFile+constants.BATTERY_FILE_EXTENSION
-    assert cartridge.battery_file_path ==  romFilePath+constants.BATTERY_FILE_EXTENSION
-    assert cartridge.has_battery() == False
+    #assert cartridge_file.battery_name == romFilePath+constants.BATTERY_FILE_EXTENSION
+    assert cartridge_file.battery_file_path ==  romFilePath+constants.BATTERY_FILE_EXTENSION
+    assert cartridge_file.has_battery() == False
     
     
-def test_cartridge_hasBattery():
-    cartridge = get_cartridge()
+def test_cartridge_file_hasBattery():
+    cartridge_file = get_cartridge_file()
     
     romName = "rom1.raw"
     romFilePath = ROM_PATH+"/rom1/"+romName
     
-    cartridge.load(romFilePath)
-    assert cartridge.has_battery() == False
+    cartridge_file.load(romFilePath)
+    assert cartridge_file.has_battery() == False
     
     
-def test_cartridge_read():
-    cartridge = get_cartridge()
-    assert cartridge.read() is None
+def test_cartridge_file_read():
+    cartridge_file = get_cartridge_file()
+    assert cartridge_file.read() is None
     
     
-def test_cartridge_remove_write_read_Battery():
-    cartridge = get_cartridge()
+def test_cartridge_file_remove_write_read_Battery():
+    cartridge_file = get_cartridge_file()
     
     romName = "rom1.raw"
     romFilePath = ROM_PATH + "/rom1/"+romName
     
-    cartridge.load(romFilePath)
-    cartridge.remove_battery()
-    assert cartridge.has_battery() == False
-    
-    cartridge.write_battery(MAPPED_CONTENT)
-    assert cartridge.has_battery() == True
-    assert cartridge.read_battery() == MAPPED_CONTENT
+    cartridge_file.load(romFilePath)
+    cartridge_file.remove_battery()
+    assert cartridge_file.has_battery() == False
+    
+    cartridge_file.write_battery(MAPPED_CONTENT)
+    assert cartridge_file.has_battery() == True
+    assert cartridge_file.read_battery() == MAPPED_CONTENT
     
-    cartridge.remove_battery()
-    assert cartridge.has_battery() == False
+    cartridge_file.remove_battery()
+    assert cartridge_file.has_battery() == False
     
     
     

Modified: pypy/dist/pypy/lang/gameboy/test/test_joypad.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/test/test_joypad.py	(original)
+++ pypy/dist/pypy/lang/gameboy/test/test_joypad.py	Sat Jun  7 14:48:43 2008
@@ -200,66 +200,93 @@
 def test_reset(joypad=None):
     if joypad is None:
         joypad = get_joypad()
-    assert joypad.joyp == 0xF
+    assert joypad.read_control == 0xF
     assert joypad.cycles == constants.JOYPAD_CLOCK
+    assert joypad.read(constants.JOYP) == 0xFF
         
 def test_emulate():
-    joypad = get_joypad()
-    ticks  = 2
-    cycles = joypad.cycles
-    joypad.emulate(ticks)
-    assert cycles - joypad.cycles == ticks
+    joypad          = get_joypad()
+    joypad.cycles   = 10
+    joypad.emulate(5)
+    assert joypad.cycles == 5
 
 def test_emulate_zero_ticks():
     joypad        = get_joypad()
     joypad.cycles = 2
-    ticks         = 2
-    joypad.emulate(ticks)
+    joypad.emulate(2)
     assert joypad.cycles == constants.JOYPAD_CLOCK
     
 def test_emulate_zero_ticks_update():   
     joypad = get_joypad() 
-    value = 0x1
-    joypad.joyp = value
-    joypad.driver.button_code = 0x4
-    joypad.driver.raised = True
-    joypad.cycles = 2
-    ticks = 2
-    joypad.emulate(ticks)
+    joypad.read_control        = 0x2
+    joypad.driver.button_up()
+    assert joypad.driver.get_direction_code() == constants.BUTTON_UP
+    joypad.driver.raised      = False
+    joypad.cycles             = 2
+    
+    assert joypad.button_code == 0xF
+    joypad.emulate(2)
     assert joypad.cycles      == constants.JOYPAD_CLOCK
-    assert joypad.joyp        == value
-    assert joypad.button_code == 0
+    assert joypad.read_control == 2
+    assert joypad.button_code == 0xF
+    assert joypad.interrupt.joypad.is_pending() == False
+    
+    joypad.driver.raised      = True
+    joypad.cycles             = 2
+    assert joypad.button_code == 0xF
+    joypad.emulate(2)
+    assert joypad.cycles      == constants.JOYPAD_CLOCK
+    assert joypad.read_control == 2
+    assert joypad.button_code == constants.BUTTON_UP
+    assert joypad.interrupt.joypad.is_pending() == True
     
 def test_read_write():
     joypad = get_joypad()
-    value  = 0x2
-    joypad.write(constants.JOYP, value)
-    joyp   = 0xC + (value & 0x3)
-    assert joypad.joyp == joyp
-    joyp = (joyp << 4) + 0xF
-    assert joypad.read(constants.JOYP) == joyp
+    assert joypad.read(constants.JOYP) == 0xFF
+    joypad.write(constants.JOYP, 0x02)
+    assert joypad.read(constants.JOYP)   == 0xCF
     assert joypad.read(constants.JOYP+1) == 0xFF
-    # no change on writing the wrong address
-    joypad.write(constants.JOYP+1, value+1)
-    assert joypad.read(constants.JOYP) == joyp
     
+    joypad.write(constants.JOYP, 0x00)
+    assert joypad.read(constants.JOYP) & 0xF0 == 0xC0
+    
+    joypad.write(constants.JOYP, 0x10)
+    assert joypad.read(constants.JOYP) & 0xF0 == 0xD0
+    
+    joypad.write(constants.JOYP, 0x20)
+    assert joypad.read(constants.JOYP) & 0xF0 == 0xE0
+    
+    joypad.write(constants.JOYP, 0x30)
+    assert joypad.read(constants.JOYP) & 0xF0 == 0xF0
+    
+    joypad.write(constants.JOYP, 0xFF)
+    assert joypad.read(constants.JOYP) & 0xF0 == 0xF0
     
 def test_update():
     joypad = get_joypad()
+    # toogle the buttons
     joypad.driver.button_select()
     assert joypad.driver.get_button_code() == constants.BUTTON_SELECT
     joypad.driver.button_up()
     assert joypad.driver.get_direction_code() == constants.BUTTON_UP
     assert joypad.button_code == 0xF
-    joypad.joyp = 0x1
+    
+    joypad.write(constants.JOYP, 0x10)
+    joypad.update()
+    assert joypad.button_code == constants.BUTTON_SELECT
+    assert joypad.interrupt.joypad.is_pending()
+    
+    joypad.interrupt.joypad.set_pending(False)
+    joypad.write(constants.JOYP, 0x10)
     joypad.update()
-    assert joypad.button_code == (constants.BUTTON_SELECT | constants.BUTTON_UP)
+    assert joypad.button_code == constants.BUTTON_SELECT
+    assert joypad.interrupt.joypad.is_pending() ==  False
     
-    joypad.joyp = 0x2
+    joypad.write(constants.JOYP, 0x20)
     joypad.update()
-    assert joypad.button_code == (constants.BUTTON_SELECT | constants.BUTTON_UP)
+    assert joypad.button_code == constants.BUTTON_UP
     
-    joypad.joyp = 0x3
+    joypad.write(constants.JOYP, 0x30)
     joypad.update()
     assert joypad.button_code == 0xF
     



More information about the Pypy-commit mailing list