VGM player

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
VGM player
by on (#78441)
I decided to write a VGM player for the Gameboy.

You can download it and the source code here
And you can see/hear it in action here

It obviously doesn't cover all the chips supported by the VGM format. Only the SN76489 is emulated (used in Sega Master System and Game Gear).

Since the waveform channel on the Gameboy only has 4 different volume settings it'll probably sound weird in some songs. Loading new waveforms dynamically to simulate 16 volume settings didn't seem like a good option.

by on (#78446)
"The system cannot execute the specified program."

Really? Is this a .NET thing?

by on (#78456)
tokumaru wrote:
"The system cannot execute the specified program."

Really? Is this a .NET thing?


It also may be that it's not 32/64-bit, I'll test it later.

by on (#78474)
tokumaru wrote:
"The system cannot execute the specified program."

Really? Is this a .NET thing?


Nope. Regular C++, and it's 32-bit.
It's compiled with Visual Studio 2008, so the only thing I can think of right now is that you're missing the correct RTL (msvcrt90.dll).

by on (#78479)
I have VS2008 and it's not working. Could the uploaded file be corrupted?

by on (#78480)
Quote:
Could the uploaded file be corrupted?

Not unless winrar corrupted it when I zipped everything. The same exe is working fine on my machine (running 32-bit Vista). I can upload a new archive later, along with the source of the tool.

by on (#78486)
Ok, I made some fixes to the player. I also recompiled the tool with VS2005, and it's now statically linked against the RTL. The source code for the tool is now included as well.

Download link
Youtube video

by on (#78492)
I still couldn't run the EXE after installing the runtime files... Will try the new package now!

EDIT: Still the same error. This is really weird... I'll try it on my other PC sometime.

by on (#78498)
I checked the latest exe (the one from dmvgm-2.zip) with DependencyWalker, and it only listed MSVCR80.DLL and KERNEL32.DLL.

Here's what VS puts in the manifest when it builds the program:

Code:
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.4053' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>


That's the only dependency in the manifest.

EDIT: I added the exact DLL I'm using to the archive. Download here

by on (#78500)
mic_ wrote:
I checked the latest exe (the one from dmvgm-2.zip) with DependencyWalker, and it only listed MSVCR80.DLL and KERNEL32.DLL.

Here's what VS puts in the manifest when it builds the program:

I'm pretty sure you also have to include the file "Microsoft.VC80.CRT.manifest" in the release.

by on (#78501)
thefox wrote:
mic_ wrote:
I checked the latest exe (the one from dmvgm-2.zip) with DependencyWalker, and it only listed MSVCR80.DLL and KERNEL32.DLL.

Here's what VS puts in the manifest when it builds the program:

I'm pretty sure you also have to include the file "Microsoft.VC80.CRT.manifest" in the release.


Alright. Added all of those files and re-uploaded

by on (#78508)
Ah, it finally worked! It's pretty interesting to listen to SMS songs on the GB! Some songs end up losing important channels, but it's still very cool!

by on (#78847)
I don't know how well this would work for volume slides, but you could have a table of different height pulse waves for the other pulse channel via the GB WAV channel.

Good work. :)

by on (#78852)
Already tried that. It sounded awful. :P