[pypy-svn] r57364 - in pypy/dist/pypy/lang/gameboy: . test
cami at codespeak.net
cami at codespeak.net
Sun Aug 17 19:49:03 CEST 2008
Author: cami
Date: Sun Aug 17 19:49:00 2008
New Revision: 57364
Modified:
pypy/dist/pypy/lang/gameboy/cartridge.py
pypy/dist/pypy/lang/gameboy/gameboy.py
pypy/dist/pypy/lang/gameboy/gameboy_implementation.py
pypy/dist/pypy/lang/gameboy/test/test_cpu.py
pypy/dist/pypy/lang/gameboy/test/test_memory_bank_controller.py
Log:
fixed bug in cartrdige mbc1 where reset() cleared the rom[] and ram[] by mistake
added test for this bug
Modified: pypy/dist/pypy/lang/gameboy/cartridge.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/cartridge.py (original)
+++ pypy/dist/pypy/lang/gameboy/cartridge.py Sun Aug 17 19:49:00 2008
@@ -12,6 +12,7 @@
#from pypy.rlib.rstr import str_replace
import os
+import pdb
# HELPERS ----------------------------------------------------------------------
@@ -72,6 +73,8 @@
self.clock = clock
self.cartridge = None
self.mbc = None
+ self.rom = [0]
+ self.ram = [0]
def reset(self):
if not self.has_battery():
@@ -278,6 +281,8 @@
self.max_ram_bank_size = max_ram_bank_size
self.rom_bank_size = rom_bank_size
self.rom_bank = self.rom_bank_size
+ self.rom = []
+ self.ram = []
self.reset()
self.set_rom(rom)
self.set_ram(ram)
@@ -285,8 +290,6 @@
def reset(self):
self.ram_bank = 0
self.ram_enable = False
- self.rom = []
- self.ram = []
self.rom_size = 0
self.ram_size = 0
Modified: pypy/dist/pypy/lang/gameboy/gameboy.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/gameboy.py (original)
+++ pypy/dist/pypy/lang/gameboy/gameboy.py Sun Aug 17 19:49:00 2008
@@ -16,7 +16,8 @@
from pypy.lang.gameboy.video import *
from pypy.lang.gameboy.cartridge import *
-
+import pdb
+
class GameBoy(object):
def __init__(self):
@@ -68,6 +69,7 @@
self.sound.stop()
def reset(self):
+ print "python resetting gameboy"
self.ram.reset()
self.memory_bank_controller.reset()
self.interrupt.reset()
@@ -78,7 +80,7 @@
self.video.reset()
self.sound.reset()
self.cpu.set_rom(self.cartridge_manager.get_rom())
- #self.draw_logo()
+ self.draw_logo()
def get_cycles(self):
return min(min(min(min( self.video.get_cycles(),
Modified: pypy/dist/pypy/lang/gameboy/gameboy_implementation.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/gameboy_implementation.py (original)
+++ pypy/dist/pypy/lang/gameboy/gameboy_implementation.py Sun Aug 17 19:49:00 2008
@@ -31,11 +31,12 @@
def mainLoop(self):
+ self.reset()
try:
isRunning = True
while isRunning and self.handle_events():
self.emulate(constants.GAMEBOY_CLOCK >> 2)
- #RSDL.Delay(1)
+ RSDL.Delay(1)
except :
lltype.free(self.event, flavor='raw')
RSDL.Quit()
@@ -94,7 +95,7 @@
#if y%2 == 0 or True:
# px = self.get_pixel_color(x, y)
# str += ["#", "%", "+", " ", " "][px]
- pass
+ RSDL_helper.set_pixel(self.screen, x, y, self.get_pixel_color(x, y))
#print str;
def pixel_map(self, x, y):
Modified: pypy/dist/pypy/lang/gameboy/test/test_cpu.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/test/test_cpu.py (original)
+++ pypy/dist/pypy/lang/gameboy/test/test_cpu.py Sun Aug 17 19:49:00 2008
@@ -1037,7 +1037,7 @@
assert cpu.sp.get() == spValue+value
# ldh_A_mem
-def test_0xF0():
+def test_0xF0_store_memory_at_axpanded_fetch_address_in_a():
cpu = get_cpu()
valueA = 0x11
value = 0x12
Modified: pypy/dist/pypy/lang/gameboy/test/test_memory_bank_controller.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/test/test_memory_bank_controller.py (original)
+++ pypy/dist/pypy/lang/gameboy/test/test_memory_bank_controller.py Sun Aug 17 19:49:00 2008
@@ -185,6 +185,24 @@
basic_read_write_test(mbc, 0, 0x7FFF)
+def test_mbc1_reset(mbc=None):
+ if mbc==None:
+ mbc = get_mbc1()
+ mbc.rom_bank = constants.ROM_BANK_SIZE +1
+ mbc.memory_model = 1
+ mbc.ram_enable = True
+ mbc.ram_bank = 1
+ mbc.rom = range(0, 128, 3)
+ mbc.ram = range(0, 128, 3)
+ mbc.reset()
+ assert mbc.rom_bank == constants.ROM_BANK_SIZE
+ assert mbc.memory_model == 0
+ assert mbc.ram_enable == False
+ assert mbc.ram_bank == 0
+ assert len(mbc.rom) > 0
+ assert len(mbc.ram) > 0
+
+
def test_mbc1_write_ram_enable(mbc=None):
if mbc is None:
mbc = get_mbc1()
More information about the Pypy-commit
mailing list