nes 0.2.0
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 :heavycheckmark: |
| cpuinterruptsv2 | 6/6 Pass
cpu
1-clilatency :heavycheckmark:
2-nmiandbrk :heavycheckmark:
3-nmiandirq :heavycheckmark:
4-irqanddma :heavycheckmark:
5-branchdelaysirq :heavycheckmark: |
| cputimingtest6 | Pass |
| instrtest-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> |
| instrtiming | 3/3 Pass
instr
1-instrtiming :heavycheckmark:
2-branchtiming :heavycheckmark:</details> |
| nestest | Pass |
PPU Tests
| Name | Results |
| ---------------------------- | -------------------- |
| blarggpputests2005.09.15b | 5/5 Pass
palette
poweruppalette :heavycheckmark:
spriteram :heavycheckmark:
vblcleartime :heavycheckmark:
vramaccess :heavycheckmark:</details> |
| nmisync | 0/2 Pass
demo
demopal :x: |
| ppuspritehit | 11/11 Pass
ppu
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 :heavycheckmark:</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 |
| ---------------------------- | -------------------- | -------------------- |
| apumixer | 4/4 Pass
dmc :heavy
noise :heavycheckmark:
square :heavycheckmark:
triangle :heavycheckmark: | |
| apuphasereset | Pass | |
| apureset | <details><summary>6/6 Pass</summary>4015cleared :heavycheckmark:
4017timing :heavycheckmark:
4017written :heavycheckmark:
irqflagcleared :heavycheckmark:
lenctrsenabled :heavycheckmark:
worksimmediately :heavycheckmark:</details> | |
| aputest | 9/9 Pass
apu
1-lenctr :heavycheckmark:
2-lentable :heavycheckmark:
3-irqflag :heavycheckmark:
4-jitter :heavycheckmark:
5-lentiming :heavycheckmark:
6-irqflagtiming :heavycheckmark:
7-dmcbasics :heavycheckmark:
8-dmcrates :heavycheckmark:</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> | |
| dmctests | 4/4 Pass
buffer
latency :heavycheckmark:
status :heavycheckmark:
statusirq :heavycheckmark: | |
| dpcmletterbox | Pass | HSYNC timing issues create flicker when scrolling |
| fadeoutandtriangletest | 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 :heavycheckmark: | |
| testapusweep | 2/2 Pass
sweep
sweepsub :heavycheckmark: | |
| testaputimers | 4/4 Pass
dmc
noisepitch :heavycheckmark:
squarepitch :heavycheckmark:
trianglepitch :heavycheckmark: | |
| testtrilinctr | 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
- 0.2.0 released 5 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
-
75 downloads total
-
- Score:
- 1.8
- Short URL:
- nes.dub.pm