nes 0.2.0

NES emulator library written in D


To use this package, put the following dependency into your project's dependencies section:

dub.json
dub.sdl

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:<br>2.BackwardBranch :heavycheckmark:
3.ForwardBranch :heavycheckmark:</details> | | cpuinterruptsv2 | <details><summary>6/6 Pass</summary>cpuinterrupts :heavycheckmark:
1-clilatency :heavycheckmark:<br>2-nmiandbrk :heavycheckmark:<br>3-nmiandirq :heavycheckmark:<br>4-irqanddma :heavycheckmark:<br>5-branchdelaysirq :heavycheckmark:</details> | | cputimingtest6 | Pass | | instrtest-v5 | <details><summary>18/18 Pass</summary>allinstrs :heavycheckmark:<br>officialonly :heavycheckmark:
01-basics :heavycheckmark:
02-implied :heavycheckmark:
03-immediate :heavycheckmark:
04-zeropage :heavycheckmark:<br>05-zpxy :heavycheckmark:
06-absolute :heavycheckmark:
07-absxy :heavycheckmark:<br>08-indx :heavycheckmark:
09-indy :heavycheckmark:<br>10-branches :heavycheckmark:<br>11-stack :heavycheckmark:<br>12-jmpjsr :heavycheckmark:
13-rts :heavycheckmark:
14-rti :heavycheckmark:
15-brk :heavycheckmark:
16-special :heavycheckmark:</details> | | instrtiming | <details><summary>3/3 Pass</summary>instrtiming :heavycheckmark:
1-instrtiming :heavycheckmark:<br>2-branchtiming :heavycheckmark:</details> | | nestest | Pass |

PPU Tests

| Name | Results | | ---------------------------- | -------------------- | | blarggpputests2005.09.15b | <details><summary>5/5 Pass</summary>paletteram :heavycheckmark:
poweruppalette :heavycheckmark:
spriteram :heavycheckmark:<br>vblcleartime :heavycheckmark:<br>vramaccess :heavycheckmark:</details> | | nmisync | <details><summary>0/2 Pass</summary>demontsc :x:
demopal :x:</details> | | ppuspritehit | <details><summary>11/11 Pass</summary>ppuspritehit :heavycheckmark:<br>01-basics :heavycheckmark:<br>02-alignment :heavycheckmark:<br>03-corners :heavycheckmark:<br>04-flip :heavycheckmark:<br>05-leftclip :heavycheckmark:
06-rightedge :heavycheckmark:<br>07-screenbottom :heavycheckmark:
08-doubleheight :heavycheckmark:<br>09-timing :heavycheckmark:<br>10-timingorder :heavycheckmark:</details> | | ppuvblnmi | <details><summary>11/11 Pass</summary>ppuvblnmi :heavycheckmark:
01-vblbasics :heavycheckmark:<br>02-vblsettime :heavycheckmark:<br>03-vblcleartime :heavycheckmark:<br>04-nmicontrol :heavycheckmark:
05-nmitiming :heavycheckmark:<br>06-suppression :heavycheckmark:<br>07-nmiontiming :heavycheckmark:<br>08-nmiofftiming :heavycheckmark:<br>09-evenoddframes :heavycheckmark:<br>10-evenoddtiming :heavycheck_mark:</details> | | scanline | Pass |

APU Tests

| Name | Results | Notes | | ---------------------------- | -------------------- | -------------------- | | apumixer | <details><summary>4/4 Pass</summary>dmc :heavycheckmark:<br>noise :heavycheckmark:<br>square :heavycheckmark:<br>triangle :heavycheckmark:</details> | | | apuphasereset | Pass | | | apureset | <details><summary>6/6 Pass</summary>4015cleared :heavycheckmark:<br>4017timing :heavycheckmark:
4017written :heavycheckmark:<br>irqflagcleared :heavycheckmark:<br>lenctrsenabled :heavycheckmark:<br>worksimmediately :heavycheckmark:</details> | | | aputest | <details><summary>9/9 Pass</summary>aputest :heavycheckmark:
1-lenctr :heavycheckmark:<br>2-lentable :heavycheckmark:
3-irqflag :heavycheckmark:<br>4-jitter :heavycheckmark:<br>5-lentiming :heavycheckmark:
6-irqflagtiming :heavycheckmark:
7-dmcbasics :heavycheckmark:<br>8-dmcrates :heavycheckmark:</details> | | | blarggapu2005.07.30 | <details><summary>11/11 Pass</summary>01.lenctr :heavycheckmark:<br>02.lentable :heavycheckmark:
03.irqflag :heavycheckmark:<br>04.clockjitter :heavycheckmark:
05.lentimingmode0 :heavycheckmark:
06.lentimingmode1 :heavycheckmark:
07.irqflagtiming :heavycheckmark:
08.irqtiming :heavycheckmark:<br>09.resettiming :heavycheckmark:
10.lenhalttiming :heavycheckmark:
11.lenreloadtiming :heavycheckmark:</details> | | | dmctests | <details><summary>4/4 Pass</summary>bufferretained :heavycheckmark:
latency :heavycheckmark:
status :heavycheckmark:
statusirq :heavycheckmark:</details> | | | dpcmletterbox | Pass | HSYNC timing issues create flicker when scrolling | | fadeoutandtriangletest | Pass | | | squaretimerdiv2 | Pass | | | testapu2 | <details><summary>10/10 Pass</summary>test1 :heavycheckmark:<br>test2 :heavycheckmark:
test3 :heavycheckmark:<br>test4 :heavycheckmark:
test5 :heavycheckmark:<br>test6 :heavycheckmark:
test7 :heavycheckmark:<br>test8 :heavycheckmark:
test9 :heavycheckmark:<br>test10 :heavycheckmark:</details> | | | testapuenv | Pass | | | testapum | <details><summary>3/3 Pass</summary>test9 :heavycheckmark:<br>test10 :heavycheckmark:
test11 :heavycheckmark:</details> | | | testapusweep | <details><summary>2/2 Pass</summary>sweepcutoff :heavycheckmark:
sweepsub :heavycheckmark:</details> | | | testaputimers | <details><summary>4/4 Pass</summary>dmcpitch :heavycheckmark:
noisepitch :heavycheckmark:<br>squarepitch :heavycheckmark:
trianglepitch :heavycheckmark:</details> | | | 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
Authors:
  • Blahness
Dependencies:
none
Versions:
0.2.0 2018-Oct-30
0.1.0 2018-Feb-02
~master 2018-Oct-31
Show all 3 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 65 downloads total

Score:
1.8
Short URL:
nes.dub.pm