[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