[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