XMPlay GME plugin

Started by mrmudlord,

mrmudlord

Here is a implementation of blargg's Game_Music_Emu under XMPlay.

Supports the following files:
* AY
* GBS
* GYM
* HES
* KSS
* NSF
* NSFE
* RSN
* SAP
* SGC
* SPC
* VGM
* VGZ

Supports basic functionality like subsongs for GBS/HES/NSF, tags, seeking, etc. You will need xmp-rar as well as xmp-zip and possibly xmp-gzip to use this.


mrmudlord

revision 2 up, mainly fixed memory leaks as well as adding RSN/VGZ support. Requires xmp-rar as well as xmp-zip.

rst

#3
awesome !!!

thx for this !

in fact i were near to perform a request here for the gme :)

dbz

I've just tried using this plugin, but unfortunately it doesn't load in XMplay for me. I have the other plugins mentioned (rar, zip and gzip). Is this plugin incompatible with Win98/SE by any chance?

mrmudlord

Yes.
Blame MSVC2010 for not making binaries compatible with Win98.

saga

KernelEx might help (as with most modern software). A further requirement might be to make the library compatible with Windows 2000, there are many solutions for that floating around the web. Or compile with VS2008 Express if you really care about Win98.

guesst

Quote from: sagaOr compile with VS2008 Express if you really care about Win98.

AFAIK the last version compatible with Win98 was MS Studio .NET aka 7.1 aka 2003.

saga

Actually, VS2005 should still work (but not for Win95). Not a big loss either way, especially since there is KernelEx for Win98 which makes VS2008 executables runnable on this system.

mrmudlord

I should have added this in the Readme, sorry about the hassles.  Working on adding looping via XMPlay's built in buttons, but if not able to, will resort to a config option like I did in the Winamp version of this.

Is it confirmed to work in KernelEx, or are we SOL?

dbz

I'd rather not take the risk of KernelEx messing up my system somehow, so I've never used it - even though I have heard about it before, and you can supposedly run programs you otherwise couldn't. So I can't confirm or deny whether or not it works with this... maybe there's someone else (braver than me) who can answer your question.

saga

#11
Quote from: dbzI'd rather not take the risk of KernelEx messing up my system somehow
There is no reason why KernelEx would do this, since it does actually not modify any system files. There's no risk in running it - you can enable or disable it for each application.
I can also personally assure you that KernelEx works like a charm - I have it running on my (nowadays rarely used) oldskool comp which hasn't been reinstalled since 2003 or so, and surprise: it didn't break down when I installed KernelEx!

dbz

If that's the case, maybe I'll give it another look...

mrmudlord

Added revision 3, which adds looping.
If you select no looping in XMPlay, plays as usual, otherwise, loops forever.
Loop cancels as soon as you switch back to no looping.

mrmudlord


Firebrand

Nice work so far, it seems to work well for basic playing of files.

tails_

Sounds pretty distorted on at least these VGMs: http://tails.bloodheaven.net/VGMPP/_etc/VGMTools/_tmp/ChattyOPNA.7z

Also, why it doesn't play VGMs directly from archive?

mrmudlord

#17
I need to report the distort bug to the maintainer of the GME library.

And not playing compressed VGMs from archives? Maybeyou don't have xmp-7z as well as other archive plugins like xmp-zip?

B00daW

#18
Very useful plugin so far!  I'm glad there is an XMPlay only option as well. :)  Thank you for taking the time.

A few things to note.  NSFPlay 2.2 by rainwarrior is known to be the most updated and accurate, open source NSF player known right now.  Being that there is a lot of NSF composition these days it pays to be very accurate in playing.  Perhaps adding his code would help. :)

http://rainwarrior.ca/projects/nsfplay/

Something very exciting that I would like to add is that the creator of NSF and SGC has created the SPC2 (or SP2) format.  (This is also the first public announcement with the resources.)

Here is the spec:  http://blog.kevtris.org/blogfiles/spc2_file_specification_v1.txt

The goal of the format was to allow a multiple track set of SPCs in one file that is able to be played on hardware without taking up a lot of ROM space.  kevtris, marshallh, and CaitSith2 achieved this.

marshallh and CaitSith2 made an easy to use SPC2 packer (with source):  https://dl.dropbox.com/u/36071551/spc2_pack.zip

And here is a 150MB archive of SP2s:  https://dl.dropbox.com/u/36071551/spc2.rar

Hope you'll consider supporting this. :)

brycco

ah wow.. finally a native plugin for these pesky formats.. i've been using nezplug++ but i'm really not a fan of winamp plugins. they conflict a lot, write ini's anywhere they feel like and cause xmplay to crash with enough of them installed.

seeking could be a bit better, it hangs a bit when seeking far into some songs (vgm/spc etc nsf seems okay). also more robust metadata handling would be great, i don't think NSFs make use of the title/year.. and NSFE subsongs aren't getting the correct length?

anyway this is great keep up the good work :-)

mrmudlord

Nothing can be done about seeking: Seeking in emulated file dumps is a brute-force operation. They don't work like normal formats like streamed/tracked/sequenced formats where its easy to seek.

As for title handling, I am just using the APIs GME provides for title/metadata. I know it has interfaces for SPC x666 tag handling, not sure if NSF has similar tags...

B00daW

NSF does not have a tagging format for multiple tracks.  However NSFe does; and NSF2 will as well.  SPC2 has the ability to hold multiple accounts of ID666 tags.

B00daW

Also I'm wondering how certain formats can be disabled within XMP-GME.  I have tried setting priorities between XMP-GME and NSFPlug, yet XMPlay still seems to prefer to open NSF files with XMP-GME.  NSFPlug's emulation and compatibility is superior to GME's.

Dotpitch

The Priority filetypes-box should be able to do that, is that not working on your machine? Can NSFPlug play those files if xmp-gme is not loaded?

B00daW

Yes.  If NSFPlug (by rainwarrior) is loaded it plays NSFs perfectly fine without XMP-GME.  NSFPlug plays NSF and NSFE filetypes.

I tried listing all the filetypes for the XMP-GME plugin and making NSFE and NSF last respectively. Then I set NSFPlug's filetype priorities as NSF then NSFE.  There are more NSFs than NSFe's at this point.  This does not work.  I think XMPlay loads XMP-*.dll (XMPlay) plugins in priority before in_*.dll (Winamp) plugins.