Skip to content

Nestronic Video Game Music Synthesizer (Alarm Clock)

Technical discussion which is not directly related to VGM files. Talk about Hardware and Software.

Moderator: Staff

  • octorian Offline
  • Posts: 7
  • Joined: 2018-04-28, 18:14:49

Nestronic Video Game Music Synthesizer (Alarm Clock)

Post by octorian »

So this is a project I've been working on for most of this year. Its also a direct result of my discovery of VGM files and their uses. I figured it was time to start sharing it more broadly, so here goes...

The Nestronic is a hardware VGM player for the NES APU, with a real-time clock. The front-end is driven by an ESP32 microcontroller, which reads VGM files off a microSD card and uses data from them to control the NES APU over I2C.

For more information about the project, at least through revision A of the hardware, please see these blog posts:
http://hecgeek.blogspot.com/2018/02/nestronic-1.html
http://hecgeek.blogspot.com/2018/03/nestronic-2.html
http://hecgeek.blogspot.com/2018/05/nestronic-3.html
http://hecgeek.blogspot.com/2018/07/nestronic-4.html

I just finished a video covering the complete assembly process for the revision B hardware:
https://youtu.be/UlO0NQTAaJU

All of the project designs and source code is here:
https://github.com/dkonigsberg/nestronic
  • Shywolf Offline
  • Posts: 41
  • Joined: 2015-11-01, 22:18:27

Post by Shywolf »

Nice. I like how there is some 6502 code involved, and the inclusion of all "old-world" and "new-world" parts onto a single PCB feels very slick.

IMO, DPCM support should be a priority for future firmware revisions. Earlier games largely ignored it, but later games (including this relatively famous one) tend to use it extensively for percussion samples.
  • ctr Offline
  • Posts: 492
  • Joined: 2013-07-17, 23:32:39

Post by ctr »

You kinda have to have 6502 code if you're using NES APU, because it is only accessible from the 2A03 itself.
  • octorian Offline
  • Posts: 7
  • Joined: 2018-04-28, 18:14:49

Post by octorian »

Shywolf wrote:IMO, DPCM support should be a priority for future firmware revisions. Earlier games largely ignored it, but later games (including this relatively famous one) tend to use it extensively for percussion samples.
Yeah. Not mapping any RAM onto the DPCM sample address range was a big goof from revision A (that I didn't realize until after I'd built it). One of the major changes I made in revision B was mirroring the 2A03's RAM onto both $0000 and $C000. Since I'm using an 8k SRAM chip, but really don't need very much for the actual code I'm running on it, that leaves plenty for samples.

The next major task for the 2A03's firmware is to add support to its I2C protocol for pushing bytes into that range, and trying to get DPCM working.
Post Reply