nes ~master
NES emulator library written in D
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
Summary
This is an NES emulator library written in D. It started as a port to D from Go of github.com/fogleman/nes. It's pure D & has no dependencies.
Installation
Just add "nes": "\~>0.2.0" or "nes" version="\~>0.2.0" to the dependencies section of your dub.json or dub.sdl file.
Usage
See github.com/blahness/nes_test for an example usage.
Mappers
The following mappers have been implemented:
- NROM (0)
- MMC1 (1)
- UNROM (2)
- CNROM (3)
- MMC3 (4)
- AOROM (7)
- 255
Test ROM Results
CPU Tests
Name | Results |
---|---|
branchtimingtests | <details><summary>3/3 Pass</summary>1.BranchBasics :heavycheckmark: 2.BackwardBranch :heavycheckmark: 3.ForwardBranch :heavycheck_mark:</details> |
cpuinterruptsv2 | <details><summary>6/6 Pass</summary>cpuinterrupts :heavycheckmark: 1-clilatency :heavycheckmark: 2-nmiandbrk :heavycheckmark: 3-nmiandirq :heavycheckmark: 4-irqanddma :heavycheckmark: 5-branchdelaysirq :heavycheckmark:</details> |
cputimingtest6 | Pass |
instr_test-v5 | <details><summary>18/18 Pass</summary>allinstrs :heavycheckmark: officialonly :heavycheckmark: 01-basics :heavycheckmark: 02-implied :heavycheckmark: 03-immediate :heavycheckmark: 04-zeropage :heavycheckmark: 05-zpxy :heavycheckmark: 06-absolute :heavycheckmark: 07-absxy :heavycheckmark: 08-indx :heavycheckmark: 09-indy :heavycheckmark: 10-branches :heavycheckmark: 11-stack :heavycheckmark: 12-jmpjsr :heavycheckmark: 13-rts :heavycheckmark: 14-rti :heavycheckmark: 15-brk :heavycheckmark: 16-special :heavycheckmark:</details> |
instr_timing | <details><summary>3/3 Pass</summary>instrtiming :heavycheckmark: 1-instrtiming :heavycheckmark: 2-branchtiming :heavycheck_mark:</details> |
nestest | Pass |
PPU Tests
Name | Results |
---|---|
blarggpputests_2005.09.15b | <details><summary>5/5 Pass</summary>paletteram :heavycheckmark: poweruppalette :heavycheckmark: spriteram :heavycheckmark: vblcleartime :heavycheckmark: vramaccess :heavycheck_mark:</details> |
nmi_sync | <details><summary>0/2 Pass</summary>demontsc :x: demopal :x:</details> |
ppuspritehit | <details><summary>11/11 Pass</summary>ppuspritehit :heavycheckmark: 01-basics :heavycheckmark: 02-alignment :heavycheckmark: 03-corners :heavycheckmark: 04-flip :heavycheckmark: 05-leftclip :heavycheckmark: 06-rightedge :heavycheckmark: 07-screenbottom :heavycheckmark: 08-doubleheight :heavycheckmark: 09-timing :heavycheckmark: 10-timingorder :heavycheck_mark:</details> |
ppuvblnmi | <details><summary>11/11 Pass</summary>ppuvblnmi :heavycheckmark: 01-vblbasics :heavycheckmark: 02-vblsettime :heavycheckmark: 03-vblcleartime :heavycheckmark: 04-nmicontrol :heavycheckmark: 05-nmitiming :heavycheckmark: 06-suppression :heavycheckmark: 07-nmiontiming :heavycheckmark: 08-nmiofftiming :heavycheckmark: 09-evenoddframes :heavycheckmark: 10-evenoddtiming :heavycheck_mark:</details> |
scanline | Pass |
APU Tests
Name | Results | Notes |
---|---|---|
apu_mixer | <details><summary>4/4 Pass</summary>dmc :heavycheckmark: noise :heavycheckmark: square :heavycheckmark: triangle :heavycheckmark:</details> | |
apuphasereset | Pass | |
apu_reset | <details><summary>6/6 Pass</summary>4015cleared :heavycheckmark: 4017timing :heavycheckmark: 4017written :heavycheckmark: irqflagcleared :heavycheckmark: lenctrsenabled :heavycheckmark: worksimmediately :heavycheckmark:</details> | |
apu_test | <details><summary>9/9 Pass</summary>aputest :heavycheckmark: 1-lenctr :heavycheckmark: 2-lentable :heavycheckmark: 3-irqflag :heavycheckmark: 4-jitter :heavycheckmark: 5-lentiming :heavycheckmark: 6-irqflagtiming :heavycheckmark: 7-dmcbasics :heavycheckmark: 8-dmcrates :heavycheck_mark:</details> | |
blarggapu2005.07.30 | <details><summary>11/11 Pass</summary>01.lenctr :heavycheckmark: 02.lentable :heavycheckmark: 03.irqflag :heavycheckmark: 04.clockjitter :heavycheckmark: 05.lentimingmode0 :heavycheckmark: 06.lentimingmode1 :heavycheckmark: 07.irqflagtiming :heavycheckmark: 08.irqtiming :heavycheckmark: 09.resettiming :heavycheckmark: 10.lenhalttiming :heavycheckmark: 11.lenreloadtiming :heavycheckmark:</details> | |
dmc_tests | <details><summary>4/4 Pass</summary>bufferretained :heavycheckmark: latency :heavycheckmark: status :heavycheckmark: statusirq :heavycheckmark:</details> | |
dpcmletterbox | Pass | HSYNC timing issues create flicker when scrolling |
fadeoutandtriangle_test | Pass | |
squaretimerdiv2 | Pass | |
testapu2 | <details><summary>10/10 Pass</summary>test1 :heavycheckmark: test2 :heavycheckmark: test3 :heavycheckmark: test4 :heavycheckmark: test5 :heavycheckmark: test6 :heavycheckmark: test7 :heavycheckmark: test8 :heavycheckmark: test9 :heavycheckmark: test10 :heavycheckmark:</details> | |
testapuenv | Pass | |
testapum | <details><summary>3/3 Pass</summary>test9 :heavycheckmark: test10 :heavycheckmark: test11 :heavycheck_mark:</details> | |
testapusweep | <details><summary>2/2 Pass</summary>sweepcutoff :heavycheckmark: sweepsub :heavycheckmark:</details> | |
testaputimers | <details><summary>4/4 Pass</summary>dmcpitch :heavycheckmark: noisepitch :heavycheckmark: squarepitch :heavycheckmark: trianglepitch :heavycheckmark:</details> | |
testtrilin_ctr | Pass | |
volume_tests | Pass |
Known Issues
- there are some minor issues with PPU timing, but most games work OK anyway
- the APU emulation isn't quite perfect, but not far off
- only NTSC timing supported for now
- Registered by blahness
- ~master released 6 years ago
- blahness/nes
- MIT License
- Authors:
- Dependencies:
- none
- Versions:
-
0.2.0 2018-Oct-30 0.1.0 2018-Feb-02 ~master 2018-Oct-31 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
0 downloads this month
-
80 downloads total
-
- Score:
- 1.7
- Short URL:
- nes.dub.pm