Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
a05b77d
worked on ppu up to mirroring
derzz Mar 12, 2025
14b2547
continued with ppu
derzz Mar 13, 2025
17860bb
added status flag functionality
derzz Mar 13, 2025
111cbf8
fixed addreg get issue
derzz Mar 13, 2025
d822cf6
added ppu registers except OAMDMA
derzz Mar 16, 2025
a5bb19c
added cycles to SB and group 1
derzz Mar 19, 2025
e553661
added some group 3 and minor fixes
derzz Mar 19, 2025
cfc4f53
added g2 cycles
derzz Mar 19, 2025
43880c8
JMP cycle implemented
derzz Mar 19, 2025
0069e35
added other cycles
derzz Mar 20, 2025
23396b7
edited cycle logic to ignore initial +2 and page jump logic
derzz Mar 20, 2025
800608a
changed cpu tests to be in old folder
derzz Mar 20, 2025
2111502
init
derzz Mar 20, 2025
c1f7699
added foundations for traces
derzz Mar 21, 2025
6ba239b
added trace fn for single byte
derzz Mar 21, 2025
6fb0f76
Revert "added trace fn for single byte"
derzz Mar 21, 2025
2c9dca2
added trace info for all functions
derzz Mar 22, 2025
ab9fede
fixed merge errors
derzz Mar 22, 2025
5ec71cf
reset trace due to misunderstanding
derzz Mar 23, 2025
2e42d38
basic structure finished
derzz Apr 23, 2025
0fe1933
added trace branching functionality
derzz Apr 23, 2025
cd66db2
fixed branching showcase
derzz Apr 24, 2025
80e48d6
tracing up to 3328
derzz Apr 27, 2025
8e8fb26
tested all offical opcodes
derzz Apr 28, 2025
3617c96
beginning illegal ops
derzz Apr 28, 2025
c445a59
finished unoffical NOP
derzz May 2, 2025
6b5d57d
finished unoffical NOP with added files
derzz May 2, 2025
ddabfbc
combined operations up to SAX complete
derzz May 2, 2025
ca58c2c
finished nes test and unoffical opcodes!
derzz May 2, 2025
06ba429
Merge pull request #3 from derzz/nestest
derzz May 2, 2025
5410d1a
working on cycles up to E652
derzz May 3, 2025
0de618c
finished cycle testing
derzz May 3, 2025
a731930
cycles support
derzz May 3, 2025
50b3623
cpu fully tested with eof signal
derzz May 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions .idea/nes.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions .idea/remote-targets.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

180 changes: 180 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ edition = "2021"
[dependencies]
sdl2 = "0.34.0"
rand = "=0.7.3"
lazy_static = "1.5.0"
log = "0.4"
env_logger = "0.10"

[dependencies.bitflags]
version = "2.8.0"
53 changes: 53 additions & 0 deletions compare_nes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/usr/bin/env python3
import subprocess
import sys
import os

# Start the emulator
emulator = subprocess.Popen(["cargo", "run"], stdout=subprocess.PIPE, text=True)

# Read expected output
with open('exact.txt', 'r') as f:
expected_lines = [line.rstrip() for line in f]

# Process output in real-time
line_num = 0
with open('output.txt.part', 'w') as out_file:
for line in emulator.stdout:
line = line.rstrip()
out_file.write(line + '\n')

# Compare with expected line
if line_num >= len(expected_lines) or line != expected_lines[line_num]:
print(f"\n🔴 Difference found at line {line_num+1}:")
print(f"Expected: '{expected_lines[line_num] if line_num < len(expected_lines) else 'EOF'}'")
print(f"Got: '{line}'")

# Kill the emulator
emulator.terminate()

# Show context
print("\n=== Context ===")
start_line = max(0, line_num - 2)
end_line = min(len(expected_lines), line_num + 3)
print(f"Expected (lines {start_line+1}-{end_line}):")
for i in range(start_line, end_line):
if i < len(expected_lines):
print(f"{i+1}: {expected_lines[i]}")
print(f"Your output (lines {start_line+1}-{end_line}):")
out_file.flush()

with open('output.txt.part', 'r') as partial_out:
output_lines = [l.rstrip() for l in partial_out]
for i in range(start_line, end_line):
if i < len(output_lines):
print(f"{i+1}: {output_lines[i]}")
os.rename('output.txt.part', 'output.txt')
sys.exit(1)

line_num += 1

# Success
os.rename('output.txt.part', 'output.txt')
print("✓ No differences found! Test passed.")
sys.exit(0)
Loading
Loading