[pypy-svn] r55417 - pypy/dist/pypy/lang/gameboy
cami at codespeak.net
cami at codespeak.net
Fri May 30 13:26:34 CEST 2008
Author: cami
Date: Fri May 30 13:26:32 2008
New Revision: 55417
Modified:
pypy/dist/pypy/lang/gameboy/cartridge.py
pypy/dist/pypy/lang/gameboy/cpu.py
pypy/dist/pypy/lang/gameboy/gameboy.py
pypy/dist/pypy/lang/gameboy/gameboyImplementation.py
Log:
updated gameboyimplementation to handle multiple keypresses
fixed non-working esc-key for quitting the emulation
Modified: pypy/dist/pypy/lang/gameboy/cartridge.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/cartridge.py (original)
+++ pypy/dist/pypy/lang/gameboy/cartridge.py Fri May 30 13:26:32 2008
@@ -94,6 +94,7 @@
self.load_battery()
self.mbc = self.create_bank_controller(self.get_memory_bank_type(),
self.rom, self.ram, self.clock)
+ print self
def check_rom(self):
if not self.verify_header():
@@ -150,7 +151,7 @@
def get_checksum(self):
return ((self.rom[constants.CHECKSUM_A_ADDRESS]) << 8) \
+ (self.rom[constants.CHECKSUM_B_ADDRESS])
-
+
def has_battery(self):
return has_cartridge_battery(self.get_memory_bank_type())
@@ -172,6 +173,12 @@
def create_bank_controller(self, type, rom, ram, clock_driver):
return MEMORY_BANK_MAPPING[type](rom, ram, clock_driver)
+
+ def __repr__(self):
+ return "Type=%s, Destination: %s ramSize: %sKB romSize: %sKB" % \
+ (self.get_memory_bank_type(), self.get_destination_code(),
+ self.get_ram_size(), self.get_rom_size()/1024)
+
# ------------------------------------------------------------------------------
@@ -197,9 +204,9 @@
def load(self, cartridge_path):
- cartridge_path = str(cartridge_path)
- self.cartridge_file_path = cartridge_path
- self.cartridge_stream = open_file_as_stream(cartridge_path)
+ cartridge_path = str(cartridge_path)
+ self.cartridge_file_path = cartridge_path
+ self.cartridge_stream = open_file_as_stream(cartridge_path)
self.cartridge_file_contents = map_to_byte(
self.cartridge_stream.readall())
self.load_battery(cartridge_path)
@@ -386,9 +393,9 @@
elif address >= 0xA000 and address <= 0xBFFF and self.ram_enable:
self.ram[self.ram_bank + (address & 0x1FFF)] = data
else:
- #return
- raise InvalidMemoryAccessException("MBC 1Invalid memory Access address: %s"
- % hex(address))
+ return
+ #raise InvalidMemoryAccessException("MBC 1Invalid memory Access address: %s"
+ # % hex(address))
def write_rom_bank_1(self, address, data):
if (data & 0x1F) == 0:
Modified: pypy/dist/pypy/lang/gameboy/cpu.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/cpu.py (original)
+++ pypy/dist/pypy/lang/gameboy/cpu.py Fri May 30 13:26:32 2008
@@ -365,7 +365,7 @@
def fetch_execute(self):
opCode = self.fetch()
- #print " fetch exe:", hex(opCode), " "
+ print " fetch exe:", hex(opCode), " "
#, FETCH_EXECUTE_OP_CODES[opCode].__name__
self.last_fetch_execute_op_code = opCode
FETCH_EXECUTE_OP_CODES[opCode](self)
@@ -568,10 +568,10 @@
self.f.z_flag_compare(self.a.get(), reset=True)
def inc_double_register(self, doubleRegister):
- self.inc(doubleRegister.get, doubleRegister.set)
+ doubleRegister.set((doubleRegister.get() + 1) & 0xFF)
def dec_double_register(self, doubleRegister):
- self.dec(doubleRegister.get, doubleRegister.set)
+ doubleRegister.set((doubleRegister.get() - 1) & 0xFF)
def inc(self, getCaller, setCaller):
# 1 cycle
Modified: pypy/dist/pypy/lang/gameboy/gameboy.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/gameboy.py (original)
+++ pypy/dist/pypy/lang/gameboy/gameboy.py Fri May 30 13:26:32 2008
@@ -78,7 +78,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(), self.serial.get_cycles()),
@@ -202,5 +202,5 @@
for tile in range(0, 12):
self.video.write(0x9904 + tile, tile + 1)
self.video.write(0x9924 + tile, tile + 13)
-
self.video.write(0x9905 + 12, 25)
+
Modified: pypy/dist/pypy/lang/gameboy/gameboyImplementation.py
==============================================================================
--- pypy/dist/pypy/lang/gameboy/gameboyImplementation.py (original)
+++ pypy/dist/pypy/lang/gameboy/gameboyImplementation.py Fri May 30 13:26:32 2008
@@ -32,15 +32,17 @@
def mainLoop(self):
- self.reset()
+ #self.reset()
try:
- while True:
- if self.poll_event():
+ isRunning = True
+ while isRunning:
+ while self.poll_event():
if self.check_for_escape():
- break
+ isRunning = False
+ break
self.joypad_driver.update(self.event)
self.emulate(constants.GAMEBOY_CLOCK >> 2)
- RSDL.Delay(10)
+ #RSDL.Delay(1)
finally:
lltype.free(self.event, flavor='raw')
RSDL.Quit()
@@ -80,15 +82,15 @@
RSDL.Flip(self.screen)
def draw_pixels(self):
- str = ""
+ #str = ""
for y in range(self.height):
- str += "\n"
+ #str += "\n"
for x in range(self.width):
- if y%2 == 0 or True:
- px = self.get_pixel_color(x, y)
- str += ["#", "%", "+", " ", " "][px]
- #RSDL_helper.set_pixel(self.screen, x, y, self.pixel_map(x, y))
- print str;
+ #if y%2 == 0 or True:
+ # px = self.get_pixel_color(x, y)
+ # str += ["#", "%", "+", " ", " "][px]
+ RSDL_helper.set_pixel(self.screen, x, y, self.pixel_map(x, y))
+ #print str;
def pixel_map(self, x, y):
return [0xFFFFFF, 0xCCCCCC, 0x666666, 0x000000][self.get_pixel_color(x, y)]
More information about the Pypy-commit
mailing list