[pypy-svn] r63010 - pypy/trunk/pypy/lang/gameboy
tverwaes at codespeak.net
tverwaes at codespeak.net
Tue Mar 17 18:55:20 CET 2009
Author: tverwaes
Date: Tue Mar 17 18:55:20 2009
New Revision: 63010
Modified:
pypy/trunk/pypy/lang/gameboy/cpu.py
Log:
some small refactorings
Modified: pypy/trunk/pypy/lang/gameboy/cpu.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/cpu.py (original)
+++ pypy/trunk/pypy/lang/gameboy/cpu.py Tue Mar 17 18:55:20 2009
@@ -325,7 +325,7 @@
self.flag.partial_reset(keep_is_zero=True)
self.flag.is_half_carry = (((added ^ self.hl.get() ^ data) & 0x1000) != 0)
self.flag.is_carry = (added >= 0x10000 or added < 0)
- self.hl.set(added & 0xFFFF)
+ self.hl.set(added)
self.cycles -= 1
def add_a_with_carry(self, getCaller, setCaller=None):
@@ -347,7 +347,7 @@
self.flag.is_half_carry = (((s ^ self.a.get() ^ data) & 0x10) != 0)
self.flag.is_carry = (s > 0xFF or s < 0)
self.flag.zero_check(s)
- self.a.set(s & 0xFF) # 1 cycle
+ self.a.set(s) # 1 cycle
def subtract_a(self, getCaller, setCaller=None):
# 1 cycle
@@ -552,7 +552,7 @@
def store_expanded_c_in_a(self):
# LDH A,(C) 2 cycles
- self.a.set(self.read(0xFF00 + self.bc.get_lo())) # 1+2 cycles
+ self.a.set(self.read(0xFF00 + self.c.get())) # 1+2 cycles
def load_and_increment_a_hli(self):
# loadAndIncrement A,(HL) 2 cycles
@@ -611,9 +611,9 @@
if (self.a.get() & 0xF0) > 0x90:
delta |= 0x60
if not self.is_n():
- self.a.set((self.a.get() + delta) & 0xFF) # 1 cycle
+ self.a.add(delta) # 1 cycle
else:
- self.a.set((self.a.get() - delta) & 0xFF) # 1 cycle
+ self.a.add(-delta) # 1 cycle
self.flag.partial_reset(keep_is_subtraction=True)
if delta >= 0x60:
self.flag.is_carry = True
@@ -635,15 +635,15 @@
s = (self.sp.get() + offset) & 0xFFFF
self.flag.reset()
if (offset >= 0):
- self.flag.is_carry = (s < self.sp.get())
- if (s & 0x0F00) < (self.sp.get() & 0x0F00):
- self.flag.is_half_carry = True
+ self.check_carry(s, self.sp.get(False))
else:
- self.flag.is_carry = (s > self.sp.get())
- if (s & 0x0F00) > (self.sp.get() & 0x0F00):
- self.flag.is_half_carry = True
+ self.check_carry(self.sp.get(False), s)
return s
-
+
+ def check_carry(self, big, small):
+ self.flag.is_carry = big < small
+ self.flag.is_half_carry = (big & 0x0F00) < (small & 0x0F00)
+
def complement_carry_flag(self):
# CCF/SCF
self.flag.partial_reset(keep_is_zero=True, keep_is_carry=True)
More information about the Pypy-commit
mailing list