[pypy-svn] r63023 - pypy/trunk/pypy/lang/gameboy
tverwaes at codespeak.net
tverwaes at codespeak.net
Wed Mar 18 04:25:59 CET 2009
Author: tverwaes
Date: Wed Mar 18 04:25:54 2009
New Revision: 63023
Modified:
pypy/trunk/pypy/lang/gameboy/cpu.py
pypy/trunk/pypy/lang/gameboy/cpu_register.py
Log:
moving around code and making reset direct.
Modified: pypy/trunk/pypy/lang/gameboy/cpu.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/cpu.py (original)
+++ pypy/trunk/pypy/lang/gameboy/cpu.py Wed Mar 18 04:25:54 2009
@@ -362,8 +362,8 @@
def compare_a_simple(self, s):
s = self.a.get() - s
self.flag.reset()
- self.flag.is_subtraction = True
self.flag.zero_check(s)
+ self.flag.is_subtraction = True
self.check_carry(self.a.get(), s)
self.cycles -= 1
@@ -382,13 +382,15 @@
def xor_a(self, getCaller, setCaller=None):
# 1 cycle
- self.a.set( self.a.get() ^ getCaller.get()) # 1 cycle
- self.flag.zero_check(self.a.get(), reset=True)
+ self.a.set(self.a.get() ^ getCaller.get()) # 1 cycle
+ self.flag.reset()
+ self.flag.zero_check(self.a.get())
def or_a(self, getCaller, setCaller=None):
# 1 cycle
self.a.set(self.a.get() | getCaller.get()) # 1 cycle
- self.flag.zero_check(self.a.get(), reset=True)
+ self.flag.reset()
+ self.flag.zero_check(self.a.get())
def inc_double_register(self, register):
# INC rr
@@ -492,7 +494,8 @@
# 1 cycle
data = getCaller.get()
s = ((data & 0x0F) << 4) + ((data & 0xF0) >> 4)
- self.flag.zero_check(s, reset=True)
+ self.flag.reset()
+ self.flag.zero_check(s)
setCaller.set(s)
def test_bit(self, getCaller, setCaller, n):
Modified: pypy/trunk/pypy/lang/gameboy/cpu_register.py
==============================================================================
--- pypy/trunk/pypy/lang/gameboy/cpu_register.py (original)
+++ pypy/trunk/pypy/lang/gameboy/cpu_register.py Wed Mar 18 04:25:54 2009
@@ -239,8 +239,14 @@
self.reset()
def reset(self):
- self.partial_reset()
-
+ self.is_zero = False
+ self.is_subtraction = False
+ self.is_half_carry = False
+ self.is_carry = False
+ self.p_flag = False
+ self.s_flag = False
+ self.lower = 0x00
+
def partial_reset(self, keep_is_zero=False, keep_is_subtraction=False,
keep_is_half_carry=False, keep_is_carry=False,\
keep_p=False, keep_s=False):
@@ -260,14 +266,14 @@
def get(self, use_cycles=True):
value = 0
- value += (int(self.is_carry) << 4)
- value += (int(self.is_half_carry) << 5)
- value += (int(self.is_subtraction) << 6)
- value += (int(self.is_zero) << 7)
+ value += (int(self.is_carry) << 4)
+ value += (int(self.is_half_carry) << 5)
+ value += (int(self.is_subtraction) << 6)
+ value += (int(self.is_zero) << 7)
return value + self.lower
def set(self, value, use_cycles=True):
- self.is_carry = bool(value & (1 << 4))
+ self.is_carry = bool(value & (1 << 4))
self.is_half_carry = bool(value & (1 << 5))
self.is_subtraction = bool(value & (1 << 6))
self.is_zero = bool(value & (1 << 7))
@@ -275,12 +281,8 @@
if use_cycles:
self.cpu.cycles -= 1
- def zero_check(self, a, reset=False):
- if reset:
- self.reset()
- if isinstance(a, (Register)):
- a = a.get()
- self.is_zero = ((a & 0xFF) == 0)
+ def zero_check(self, value):
+ self.is_zero = ((value & 0xFF) == 0)
def is_carry_compare(self, value, compare_and=0x01, reset=False):
if reset:
More information about the Pypy-commit
mailing list