Skip to content

NEZplug++ VGM mod

Current version: 0.9.4.8+2+19.20 (released on 2015-07-26)

Technical discussion about the VGM format, and all the software you need to handle VGM files.

Moderator: Staff

  • User avatar
  • ValleyBell Offline
  • Posts: 4767
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

NEZplug++ VGM mod

Post by ValleyBell »

Program: NEZplug 0.9.4.8 + 2 + 19.20, includes NEZplay (Homepage)
Program Type: VGM Creator / NSF/GBS/... Player
Platform: Windows (32-bit)
Plays formats: .kss (KSCC/KSSX), .hes, .nsf, .ay, .gbr, .gbs, .gb (from gbs2gb), .nsd, .sgc
Logs chips: SN76489, YM2413, YM3812, YM3526, Y8950, AY8910/YM2149, GameBoy DMG, NES APU, K051649 (SCC1), HuC6280
Comments: Modded by Valley Bell to log vgms. (enabled via nezplay.ini)
Keep the sample rate ("Frequency") at 44100 to get proper logs.

Binary / Source


Old versions
NEZplug v0.9.4.8 + 2 + 19.20 Binary (2013-05-29)


Release time!
NEZplug should be equally or more accurate than MESS.
Be careful with GB2GBS rips though, they might be buggy. (not because of NEZplug, but the rips themselves)
  • User avatar
  • 2ch-H Offline
  • Posts: 280
  • Joined: 2012-01-03, 2:10:28

Post by 2ch-H »

Thanks for good work.
I was able to fix Heiankyo Alien was impossible in MESS.

Reports that I noticed bug.
Different HuC6280 Clock is 21477270 Hz. (3579545 Hz correctly)

Gimmick does not output correctly, Using NES APU,Sunsoft-5B(AY8910 compatible).
This VGM sample, Gimmick - Lion Heart:
Edit : I deleted the file
Last edited by 2ch-H on 2013-06-14, 10:58:16, edited 1 time in total.
  • User avatar
  • ValleyBell Offline
  • Posts: 4767
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

The last time I worked on it was 2 months ago and I forgot if it had any bugs left.
Anyway, I fixed the bugs and tested them with a few files.

EDIT: If you downloaded before this post was made, please redownload.
  • zzo38 Offline
  • Posts: 51
  • Joined: 2013-02-18, 3:17:44
  • Contact:

Post by zzo38 »

Once the other sound chips are added into VGM format, you can make it log VGM of NSF using expansions other than Sunsoft-5B, too.

Re: NEZplug++ VGM mod

Post by Sonic of 8! »

ValleyBell wrote:NEZplug should be equally or more accurate than MESS.
SN76489 Periodic Noise emulation is horrible. Try the SGC file of Asterix (SMS) or the KSS / SGC of Argus no Juujiken (SMS) and hear it.

Also, some NSF games is not logged (early NES games), and some others, DPCM drums is not correct (Lagrange Point, and didn't log VRC7, which is similar to OPLL).
Last edited by Sonic of 8! on 2013-05-30, 1:03:58, edited 2 times in total.
オモいカルチャーをオモチャーと言う - 細野晴臣
  • User avatar
  • neologix Offline
  • Posts: 211
  • Joined: 2012-04-22, 4:03:45
  • Location: New York, NY, USA

Post by neologix »

The true test: logging Lagrange Point's VRC7 as a YM2413!

Post by JFD62780 »

2ch-H wrote:Gimmick does not output correctly, Using NES APU,Sunsoft-5B(AY8910 compatible).
This VGM sample, Gimmick - Lion Heart:
http://www.mediafire.com/download/61rtrdo7w3aw6l0
This VGM closes XMPlay upon attempting to play it. x.x
Last edited by JFD62780 on 2013-05-30, 2:30:15, edited 1 time in total.
Until next post...
  • User avatar
  • ValleyBell Offline
  • Posts: 4767
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Re: NEZplug++ VGM mod

Post by ValleyBell »

Sonic of 8! wrote:SN76489 Periodic Noise emulation is horrible.
It's just using wrong noise parameters. The logs are fine, because I copied the vgm parameters from MAME.
Also, M1 doesn't always use correct SN76489 parameters either. For this reason I almost always check submitted packs that use the SN chips for correct noise parameters.

The DPCM issue was solved with the quick update I made right before my last post.
VRC7 logging is disabled (by intention), because it's not entirely compatible with the OPLL.

(For reference: The broken VGM has an invalid NES RAM data block that writes beyond the bounds of the RAM array and crashes the plugin and player. This will be fixed with the next update.)
  • User avatar
  • 2ch-H Offline
  • Posts: 280
  • Joined: 2012-01-03, 2:10:28

Post by 2ch-H »

Thanks for update, It is output correctly.

But, I have found a the another bug.
This VGM sample, Gimmick - Happy Birthday:
Edit : I deleted the file
Gimmick_07_nes.vgm: Incorrect DPCM, not "snare drum" is played.

Gimmick_07_mess.vgm: The same thing happen Mess.
Last edited by 2ch-H on 2013-06-14, 10:57:58, edited 2 times in total.
  • User avatar
  • ValleyBell Offline
  • Posts: 4767
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

The game changes the ROM bank that gets used for DPCM mid-song and nezplug doesn't yet support that for logging.
I'll fix this in a future update, but not now. (I'd like to do that in a less hackish way than I did in MAME/MESS.)
  • User avatar
  • MaliceX Offline
  • Posts: 226
  • Joined: 2012-09-29, 11:45:48
  • Location: Australia
  • Contact:

Post by MaliceX »

Just thought I'd say, this works with SuperNSF tunes. hahaha. Dat brute force.
-dj.tuBIG/MaliceX

Post by Sonic of 8! »

SCC isn't logged into a VGM file (it still on VGM file, but it didn't play anything). Games tested: Gradius (ARC, modded into KSS file, due to SCC is very based in K005289), Gradius (SCC/SCC+ in Konami Game Collection series), probally more others.
オモいカルチャーをオモチャーと言う - 細野晴臣

Post by GTheGuardian »

Hmm,after doing a Test log of Metal Gear 2,I found oddities in the VGM file such as this:

Code: Select all

D2 01 80 01 K051649:	Ch 64: Set Frequency LSB = 01
D2 01 81 01 K051649:	Ch 64: Set Frequency MSB = 1
That might be the source of the problem.
Last edited by GTheGuardian on 2013-06-26, 22:50:32, edited 4 times in total.

Post by Sonic of 8! »

Bug report: Some DPCM drums of Super Mario Bros. 3 is missing. It occurs with various Konami games too (most from 1986 to higher). There is a way to give some miliseconds before the music starts into the VGM file (like these ones in some Taito games that I've ripped), but with minus miliseconds (about 1/2 second)?
オモいカルチャーをオモチャーと言う - 細野晴臣
  • User avatar
  • ValleyBell Offline
  • Posts: 4767
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

This is a known bug, I just haven't had time to fix it. (busy with university)
What happens is, that when the game initializes all registers, it turns the DPCM channel on and off (these commands end up at sample 0 in the VGM).
Enabling DPCM causes nezplug to write the DPCM data block to the VGM.
This all happens before the actual song starts, so the ROM banks aren't yet set up correctly. And since nezplug writes the DPCM block only once, it never writes another (correct) DPCM block.

DPCM support is bad in most of my programs anyway. vgm_trim doesn't rewrite it, vgm_sro doesn't support it and the DPCM emulation in MAME's NES sound core is quite bad, too.
I'll fix all of these issues, but I'm afraid I won't fix them this month. I have to meet some more important deadlines this month.
Post Reply