[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