/nestang

NESTang is an FPGA Nintendo Entertainment System implemented with Sipeed Tang Nano 20K and Primer 20K boards

Primary LanguageVerilogGNU General Public License v3.0GPL-3.0

NESTang - NES for Sipeed Tang FPGA Boards

NESTang is an open source project to recreate the Nintendo Entertainment System (NES) with Sipeed Tang FPGA boards, including Sipeed Tang Primer 25K, Tang Nano 20K and Tang Primer 20K.

Main features,

  • 720p HDMI output with sound.
  • Cycle accurate gameplay quality has been achieved since the NES circuits have been almost entirely replicated.
  • Rom loading from MicroSD cards with easy-to-use menu system.
  • Playstation 2 controllers support and experimental USB gamepads support.

Setup for Tang Primer 25K

The Tang Primer 25K is the latest small-form-factor FPGA board from Sipeed. It features a modular design that is easily extensible with pmod and sdram modules. Here is what you need to run NESTang,

  • The Tang Primer 25K with 4 modules: sdram, dvi, ds2 and sd, with the modules plugged in as follows (pmod positions are important as pins are fixed),
  • NESTang program v0.8rc or later, downloaded to the board with Gowin programmer.
  • A MicroSD card to hold ROMS, formatted in FAT32. Then put the .nes roms in the root dir.
    • Windows does not allow FAT32 on cards >32GB, here's a work-around.
    • The roms may appear out of order. If you want them to show in alpabetical or other specific order, you can use DriveSort.
  • Connect one or two DualShock2 controllers to the DS2 pmod. Or you can connect one USB gamepad to use the experimental USB gamepad support. The board only has one USB port. So use DS2 if you want two players.
  • Insert the MicroSD card, connect an HDMI monitor or TV, and enjoy your games.

Setup for Tang Nano 20K

The Tang Nano 20K is a popular FPGA board for putting 20K LUTs and HDMI output into a tiny dongle. The board also features FPGA-gaming-friendly SDRAM memory. Here's what you need to run NESTang:

  • The Tang Nano 20K board.
  • Sipeed ps2 controller adapters connected to the board's pin 15-20 on both sides. Releases since 0.6 also support USB gamepads.
  • Playstation or USB controllers connected to the adapters.
  • HDMI cable to connect the board to a monitor.
  • Latest NESTang program downloaded from github and transferred to the board using either openFPGALoader or Gowin programmer.
  • A MicroSD card to hold ROMS, formatted in FAT32. Then put the .nes roms in the root dir.
    • Windows does not allow FAT32 on cards >32GB, here's a work-around.
    • The roms may appear out of order. If you want them to show in alpabetical or other specific order, you can use DriveSort.
  • Insert the MicroSD card and power up the board to start playing your favorite games!

Setup for Tang Primer 20K

See setup instructions for tang primer 20k

Development

If you want to generate the bitstream from source, see Build Instructions.

Usb_hid_host was development so NESTang could support USB gamepads. Follow the link if you want to use it for your FPGA projects. It supports keyboards and mice too.

Next steps

See NESTang changes.md.

Here are what I may work on when I get time. No promise though. Suggestions and pull requests are welcome!

  • Cheats support.
  • Saves and loads.

Special Thanks

nand2mario (nand2mario at outlook.com)

Since 2022.9