Skip to content

Commit

Permalink
nestest passing, had to modify the decimal mode test in nestest.nes
Browse files Browse the repository at this point in the history
  • Loading branch information
docmarionum1 committed Feb 17, 2014
1 parent d3b928a commit 09ac6a6
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 11 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,6 @@ output/*.html
output/*/index.html

# Sphinx
docs/_build
docs/_build

*.log
19 changes: 10 additions & 9 deletions py65emu/cpu.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,9 @@ def reset(self):
self.running = True

def step(self):
#print hex(self.r.pc)
self.cc = 0
pc = self.r.pc
opcode = self.nextByte()
#print hex(pc), hex(opcode)
self.ops[opcode]()

def execute(self, instruction):
Expand All @@ -120,15 +118,15 @@ def nextWord(self):
return (high << 8) + low

def stackPush(self, v):
self.mmu.write(self.stack_page*0xff + self.r.s, v)
self.mmu.write(self.stack_page*0x100 + self.r.s, v)
self.r.s = (self.r.s - 1) & 0xff

def stackPushWord(self, v):
self.stackPush(v >> 8)
self.stackPush(v)

def stackPop(self):
v = self.mmu.read(self.stack_page*0xff + ((self.r.s + 1) & 0xff))
v = self.mmu.read(self.stack_page*0x100 + ((self.r.s + 1) & 0xff))
self.r.s = (self.r.s + 1) & 0xff
return v

Expand Down Expand Up @@ -199,12 +197,12 @@ def i_a(self):
return ((self.mmu.read(j) << 8) + self.mmu.read(i)) & 0xffff

def ix_a(self):
i = self.nextByte() + self.r.x
return ((self.mmu.read(i + 1) << 8) + self.mmu.read(i)) & 0xffff
i = (self.nextByte() + self.r.x) & 0xff
return ((self.mmu.read((i + 1) & 0xff) << 8) + self.mmu.read(i)) & 0xffff

def iy_a(self):
i = self.nextByte()
o = (self.mmu.read(i + 1) << 8) + self.mmu.read(i)
o = (self.mmu.read((i + 1) & 0xff) << 8) + self.mmu.read(i)
a = o + self.r.y

if math.floor(o/0xff) != math.floor(a/0xff):
Expand Down Expand Up @@ -767,6 +765,8 @@ def P(self, v):

if r == "a":
self.r.ZN(self.r.a)
elif r == "p":
self.r.p = self.r.p | 0b00100000

def ROL(self, a):
if a == "a":
Expand Down Expand Up @@ -810,7 +810,7 @@ def SBC(self, v2):
r = v1 - v2 - (not self.r.getFlag('C'))
self.r.a = r & 0xff

self.r.setFlag('C', r > 0)
self.r.setFlag('C', r >= 0)
self.r.setFlag('V', ((v1 ^ v2) & (v1 ^ r) & 0x80))
self.r.ZN(self.r.a)

Expand All @@ -831,7 +831,8 @@ def T(self, a):
"""
s, d = a
setattr(self.r, d, getattr(self.r, s))
self.r.ZN(getattr(self.r, d))
if d != 's':
self.r.ZN(getattr(self.r, d))


"""
Expand Down
Binary file added tests/files/nestest_mod.nes
Binary file not shown.
4 changes: 3 additions & 1 deletion tests/test_suites.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def setUp(self):
def test_nestest(self):
f = os.path.join(
os.path.dirname(os.path.realpath(__file__)),
"files", "nestest.nes"
"files", "nestest_mod.nes"
)

mmu = MMU([
Expand All @@ -35,6 +35,8 @@ def test_nestest(self):

c = CPU(mmu, 0xc000)

c.r.s = 0xfd

while c.r.pc != 0xc66e:
try:
c.step()
Expand Down

0 comments on commit 09ac6a6

Please sign in to comment.