The main goal is to build a NES emulator with developers as target audience. Porting the emulator to various embedded platforms is made possible by having a clean abstraction of hardware dependent components. Whether your need is to have hundreds of instances running in parallel or replace audio and video components for experiments - JEG will be your friend.
- Platform independent
- Cycle catch-up emulator design
- Plain C (C99) implementation
- Unit tested
- CPU 6502 completed
- PPU nearly completed (
ppu_vbl_nmi
timing test is failing) - APU missing
- Cartridge abstraction draft is working
- Supported Mappers: INES #0
- Prototype UI using SDL library (for graphics and audio)
- github:fogleman/nes (Go, pixel based rendering)
- github:NJUOS/LiteNES (C, scanline based rendering)
- github:amhndu/SimpleNES (C++, pixel based rendering)
Just call make test
do run all tests. Taken from NESDev and github:christopherpow/nes-test-roms.
- Klaus2m5/6502_65C02_functional_tests by Klaus Dormann
- blargg_ppu_tests_2005.09.15b (without power up test) by Shay "blargg" Green
- branch_timing_tests by Shay "blargg" Green
- cpu_dummy_reads by Shay "blargg" Green
- cpu_exec_space(without apu) by Shay "blargg" Green and Joel "bisqwit" Yliluoma
- cpu_timing_test6 (without unofficial) by Shay "blargg" Green
These tests are also not called by make test
.
- blargg_nes_cpu_test5 by Shay "blargg" Green - Mapper 1 not supported yet
- cpu_dummy_writes by Joel "bisqwit" Yliluoma - ROM should be not writeable
- cpu_reset by Shay "blargg" Green - no soft reset available yet
- ppu_vbl_nmi by Shay "blargg" Green - would be really nice...
- GorgonMeducer doing the EmbeddedNES-Project for discussing a lot of optimisation patterns, sharing his know how and bring in usefull code!