Skip to main content

Topic: Game Emu Player (foo_gep) by kode54 (Read 157933 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • Zulithe
  • [*]
Game Emu Player (foo_gep) by kode54
Quote
Author notes:
The latest version of the component is always available from here.

Component source code repository [Change log]
Game Music Emu library source code repository - [Change log]


kode, I like the new Game Emu Player plugin. It uses far less CPU when playing .nsf files than fastalon.

I have a question though, this plugin supports the new .nsfe format but it doesn't support the .rsn extention (which many SPC soundtracks are archived into lately), can this be added? This way a user could playback .rsn files in both winamp and foobar2000 without having to rename or extract the files from the archive. Sites like snesmusic.org distribute all of their soundtracks in .rsn. Its really not much more than a renamed .rar file, I'm sure getting foobar2000 to recognize them would be trivial.

The reason for the extention change is becuase there are some problems getting winamp to play archives without a lot of workarounds, so the author of SNESAmp came up with this simple solution.

Here's the link to SNESAmp if you want to try it out:
http://www.alpha-ii.com/Download/Main.html#SNESAmp

.rsn soundtrack archives can be gotten here:
http://www.snesmusic.org/v2/select.php?view=sets
  • Last Edit: 13 August, 2012, 10:24:20 PM by kode54

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #1
This depeneds entirely on foo_unpack, the archive reader component.

  • _zane
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #2
While we're on the topic of the Game Emu Player plugin, I thought I might toss in a small feature request of my own: the option to toggle support for each of the formats it plays.

The quality of the emulation is great; I had been hoping for a plugin like this for a while now.  There are some formats it supports that I'd still like to use another plugin for, though, without having to uninstall the Game Emu Player plugin altogether.  :-/

Just a thought, though.  Without seeing the source code, I don't know whether or not this would be feasible.


--
_zane

  • blargg
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #3
Quote
There are some formats it supports that I'd still like to use another plugin for, though, without having to uninstall the Game Emu Player plugin altogether. :-/


Are there any improvements that the core synthesis library could use? GBS and GYM are the least-polished of the bunch.

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #4
I can add toggles for the other formats, but I'm not sure what you'd want to toggle off, except for SPC. I will add toggles for all formats, but they will be enabled by default.

There is already one glitch from disabling NSF support. It happens to disable the context menu items from being reported to the core, and with the current (0.8.x) menu configuration, you must reset or reconfigure the menu structure manually to readd or remove the exposed NSFE: items. The same will hold true for SPC. Fortunately, the mechanism by which the NSF context menu passes the NSFE playlist to the NSFE input's tag writer is identical in both foo_gep and foo_festalon, so that should not be a problem.

*whew*

  • zidanax
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #5
This Plugin seems to fix the problems foo_spc had with a few of the Uncharted Waters 2 tracks, thank you very much! 

  • Cutter
  • [*][*][*][*]
Game Emu Player (foo_gep) by kode54
Reply #6
Hello!

I can't get this plugin to work (the console says "Unable too load foo_gep"). Please can someone tell me if it requires specific DLLs to run? I'm using Windows 98. Thank you.

  • Borisz
  • [*][*][*][*]
Game Emu Player (foo_gep) by kode54
Reply #7
Speaking of foo_gep, is there any chance for an updated 0.8 version? The 0.9 beta version runs formats like VGM infinitely better.

  • Cutter
  • [*][*][*][*]
Game Emu Player (foo_gep) by kode54
Reply #8
Please help. :/

  • keyosuke
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #9
I took the foo_unpack plugin that deals with RAR files and hex edited it.  Replace all instances of the letters rar with rsn and all instances of RAR with RSN.  Be careful not to replace the rar that is in libRARy.  Just go through the file with the FIND function of XVI32 hex editor or the editor of your choice and replace them as you find them ... providing the RAR you find is by itself and not part of the word library.  When you're done, save it as foo_rsn.dll and add to your directory and you now have RSN support as well as rar support.  The two simutaneously installed plugins will work fine together, even though one is a hack of the other.  I hope this makes foobar more enjoyable and that this isn't a bad bug causing menace .

_____________________________

Update:
I just downloaded foo_gym, which allows me to play genesys/mega drive game music files with gym extension, but most of mine were .rgm .  I guessed .RGM was .RAR renamed for the same reason RSN was renamed ... so I made yet another version of foo_unpack with the rar replaced with rgm ... etc.  The results were that I can now play "rgm" (rar) compressed gym files.  Little by little foobar is replacing my KBMedia player (a popular media player among japanese game music enthusiasts).  One thing that bothers me is that people have said Foobar uses unstandard tagging methods for these game music files, and it seems to be true as far as getting KBMedia to see the changes to tags that foobar has made.  As far as I'm concerned I'll keep using other programs to change the tags of these files since those tags show up everywhere. (shrugs)
  • Last Edit: 11 August, 2006, 01:29:48 PM by keyosuke

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #10
Remind me again why it is necessary to hack the plug-in instead of renaming the archives.

  • keyosuke
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #11
It's necessary because some people might want to keep the extension of their odd sound format as what the community that supports that format is currently using.  RSN is a very popular extension for RAR compressed SPC files.  People might use other players that expect an RSN extension, so renaming a library of music to suit a single application might not be what everyone would prefer.  It's really a matter of preference, more than a necessity.  Well, I hope people enjoy what I've gotten to work, over here, and if anyone responsible for the plugin or foobar wants it down, I support deleting my post, but otherwise, I hope those migrating from an RSN playing program will enjoy this and those who see no purpose for their own sake, will not mind.
  • Last Edit: 18 December, 2005, 03:59:45 PM by Jan S.

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #12
I can't imagine why anyone would need to use another application for their SPC playback needs. Other than, perhaps, Super Jukebox for its shiny lights and meters, and I don't even think that supports RSN. Even if it did, it could just as easily support RAR.

So far as I know, this RSN extension is only required for dodgy players which do not support archives globally.

  • keyosuke
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #13
Still, when the .MDZ extension was use for mod files that were zipped, rather than the .ZIP extension, it caught on and served a purpose.  To see a bunch of zip files in a directory tells a lot less than if the extensions depict what is actually compressed within.  Making the argument that everyone should just use .RAR as the extension to contain their .SPC files seems a lot like making the argument that .MDZ, as an extension, was a waste of time and should not have been.  I'm sure some people at the time would have prefered that, but I rather enjoyed giving someone a file they could clearly know was a piece of music in mod format, just upon filename inspection.  Another positive aspect of naming compressed archives, based on the contents of such archives, is that programs that are designed to play what has been compressed in these files can be associated with the extension designed to signify the content of said archive.  If you have more than one player and want to associate compressed mod files to a specific one of those players, you can associate .MDZ extension handling with that file type.  If you were to associate .ZIP with your given player, you would find the inconvenience of having that player attempt opening zip compressed applications and what not.  You're may be thinking "Who still runs individual files and relies on the file association handlers to open them?!?" or  "Couldn't the user just use a library or allow the program in question to read the compressed data from all compressed archives in a given directory and find the music files itself?!" and the answer would be yes, but this is still a matter of preference.  I prefer to open files singularly and rely on the file extension handler to operate on that file.  Once in a while I'm browsing some files and decide I want to run one of them with a double-click, and I like the association to be mapped.  To me, this is a valuable use of the .RSN extension, or new extensions for denoting what's compressed in a rar/zip/whatever.  So, this is my motivation for caring about such.  May not make sense to everyone, and if it doesn't, I appreciate your views on the matter, though, if it does, this little hack seems to help a bit.  What I would really like to see is a place in the settings where the archive plugin lets one map extensions to file formats, similar to how one maps the shortcut keys in foobar2000.  I feel this would be well suited to the foobar way of doing things, where the user is presented with the ability to configure the player to do what he or she wants.  This kind of "empower the user" attitude is what makes me like foobar so much.
  • Last Edit: 18 December, 2005, 04:00:04 PM by Jan S.

  • Cutter
  • [*][*][*][*]
Game Emu Player (foo_gep) by kode54
Reply #14
Hi kode54. Is my question too stupid for you to consider it? Of course you're not obliged to solve my problem but at least you could tell me that you don't want to bother so I don't wait in vain. But you may simply not have seen my message (despite I PM'ed you about it), in that case I'm sorry and please ignore this message.

Edit: I just found the solution by chance.
  • Last Edit: 18 December, 2005, 06:36:17 PM by Cutter

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #15
The difference between MDZ and RSN is that MDZ typically contains a single module, whereas RSN contains multiple SPC files. The API provides a means for extracting a single file from a single archive, such as unpacking gzip files, or pulling the first non-text file out of a ZIP/RAR, but indexing archives would be significantly more complicated.

Writing an archive service of my own to support RSN would require me to reimplement the RAR unpacking code. It would not be possible to use a simple service wrapper to present the RSN files to the existing RAR unpacker since it always checks the file paths for the correct extension before opening them.

Oh, and I rarely rely on file associations to open my files, so I guess that kind of explains away the use of generic archive extensions.


Cutter: Yes, by all means, stop waiting, as 0.8.3 support is probably less likely to happen in the immediate future than any of the things I actually want to do. Which is to say, 0.9 will probably be final before I even get started on that next ADPCM format I was going to add to foo_adpcm. You're welcome to use in_vgm instead. I hear the sound quality is almost tolerable.
  • Last Edit: 19 December, 2005, 12:42:56 AM by kode54

  • Borisz
  • [*][*][*][*]
Game Emu Player (foo_gep) by kode54
Reply #16
Quote
You're welcome to use in_vgm instead. I hear the sound quality is almost tolerable.
[a href="index.php?act=findpost&pid=351140"][{POST_SNAPBACK}][/a]

Same as Gens I believe, which is good enough. foo_gep uses the Gens core anyway, and fixes 1 effect that Gens would otherwise play broken. So I guess that both of them are "almost tolerable", especially compared to Kega. Unless you are talking about the SMS/CPS1 sound of course.

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #17
Quote
Quote
You're welcome to use in_vgm instead. I hear the sound quality is almost tolerable.
[{POST_SNAPBACK}][/a]

Same as Gens I believe, which is good enough. foo_gep uses the Gens core anyway, and fixes 1 effect that Gens would otherwise play broken. So I guess that both of them are "almost tolerable", especially compared to Kega. Unless you are talking about the SMS/CPS1 sound of course.
[a href="index.php?act=findpost&pid=351257"][{POST_SNAPBACK}][/a]

Actually, it currently uses a modified MAME YM2612 core. Although it is something on the order of half as fast as the optimized Gens FM core, it is more accurate. I am also looking forward to some corrections to the SSG-EG implementation, but it looks like I arrived at something pretty close. (Although, without any testing, or any real knowledge of FM synthesis, I can't be too sure. It sounds tolerable on the test case, though.)

Actually, what I was referring to was entirely separate from the FM core. Game_Music_Emu is currently the only player implementation I know of which can emulate the YM2612 at its actual clock rate, generating samples at the correct ratio of 144:1, clock to samples, then downsample the result. in_vgm can do this with the YM2413, but not for 2151 or 2612.

I know of no other implementation using band-limited synthesis or plain supersampling for the PSG unit, either, so in_vgm still has that whole aliasing thing.

The rudeness was unnecessary, though. The [a href="http://www.slack.net/~ant/libs/]library[/url] is available for anyone who wants to duplicate foo_gep in the event that I don't get my ass in gear and update the 0.8.3 version. I may just do that today.

Hmm, updating that may take some more time than I thought. It looks like Visual Studio 2005 doesn't want to open the old workspace that happens to reference (already converted or freshly made) project files without freezing. Maybe I'll have to do that with 2003 or even 98. I know MSVC6 used to dance the Internal Compiler Error mambo on random parts of Game_Music_Emu, general dislike for certain types of template classes I think.
  • Last Edit: 19 December, 2005, 05:39:44 PM by kode54

  • Borisz
  • [*][*][*][*]
Game Emu Player (foo_gep) by kode54
Reply #18
In case you update it, here are some more random ramblings:
- the current 0.83 version of foo_gep has that annoying bug fixed with a certain drum effect, used at many places in Comix Zone and Spiderman Animated series. The 0.9 version however, has not. And it sounds horrible. Anyway to "port" that fix back to the new version? that particular version of foo_gep was the only vgm/gym player that played that effect right.
http://project2612.bandwidthmonkey.net/paf...tion=file&id=12 (Episode 1, page 2-2 in that pack for a sample).

Also, in Alisia Dragoon:
http://project2612.bandwidthmonkey.net/paf...ction=file&id=6
Stage 1-1 tune has a horrible noise instead of a soft sound in 0.9b13, at the start.
Options tune has a horrible noise at the start too.
Game Over has a slightly noticable glitch too.

It's cool that foo_gep works better in the insides, but it doesn't sound better then foo_vgm to me at all.

By the way, any chances for adding playback rate, and the looping/fadeout count option instead of the "force playing indefinetaly" option?

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #19
Cutter: Today is your lucky day, I updated the 0.8.3 component.

Borisz: All part of the problem of not having any one perfect core. Even the Gens core that it was using before had its share of flaws. I will report these to Jarek Burczynski since he maintains the MAME FM core that I am using right now, and is better equipped to deal with hardware vs. emulation issues. I think...

How do the full emulators compare to the hardware? Envelope behavior is also important, as there are a number of examples where slow attacks are incorrect. For instance, Star Light Zone and Scrap Brain Zone.

Having multiple cores in the same player is not really a solution, either, if none of them are faithful in every department. Addressing flaws to arrive at one correct solution is probably a better plan.

All of the issues with Alisia Dragoon would appear to be a result of improper trimming. The emulated chip is not receiving certain writes which may have occurred as early as power-on. I even tried fading the Options sound out and jumping to #02 (stage 1-1) and logging a few seconds of silence first, and the result still had a minor glitch. Logging from power on removed the glitches from the music, but also introduced a deafening glitch where there should be no sound at all as the options menu opened. Even more food for thought. (And possibly the only way to fix this would be to use full power-on logs of everything, then write a proper trimmer that would condense all of the register writes before the start mark into a single tick, removing writes which are overridden, writes which trigger notes, and writes which do not have an audible effect on anything, such as the timer port.)

Comix Zone is definitely not suffering from trimming errors, though.

I will think about adding relative playback rate and/or looping/fadeout controls for GYM/VGM. Extending those options for emulated formats will not really be possible since looping information isn't tagged precisely enough to extend the playback duration by N loops, and it isn't really possible to change their playback durations without turning them into register logs. (Simply emulating more or less cycles per sample could make SPC blow up, since the playback code can rely on feedback from the DSP. Although the number of soundtracks likely to be affected is minimal, considering how few blow up in ZSNES. )
  • Last Edit: 19 December, 2005, 10:20:08 PM by kode54

  • Cutter
  • [*][*][*][*]
Game Emu Player (foo_gep) by kode54
Reply #20
Quote
Cutter: Today is your lucky day, I updated the 0.8.3 component.

Thank you. I'm happy to see my Master System music finally playing in foobar.

  • uuron
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #21
I would appreciate the adding of fadeout controls for gym/vgm files. Thanks.

  • Cutter
  • [*][*][*][*]
Game Emu Player (foo_gep) by kode54
Reply #22
Yes I second that request, plus the long-awaited loop count.
It would also be great if the GEP Controls had incidence on the converter's output.

Thanks in advance.
  • Last Edit: 31 January, 2008, 12:28:32 AM by Cutter

  • imiganai
  • [*]
Game Emu Player (foo_gep) by kode54
Reply #23
Hmm, I seem to be having trouble tagging some .spc files.
From snesmusic.org, I have issues tagging Super Mario All-Stars and the two Mario Worlds.  I haven't had (and still don't have) any trouble tagging others, such as EarthBound, but when I try to save the tags on, say, a Super Mario All-Stars track I get the error "Could not update tags (bad allocation) on: ___.spc".
Bad dump?  Or foo_gep issue?  I thought the snesmusic.org tracks were supposed to be of the highest quality, and Super Jukebox seems to be able to tag them...

  • kode54
  • [*][*][*][*][*]
  • Administrator
Game Emu Player (foo_gep) by kode54
Reply #24
Hmm, I seem to be having trouble tagging some .spc files.
From snesmusic.org, I have issues tagging Super Mario All-Stars and the two Mario Worlds.  I haven't had (and still don't have) any trouble tagging others, such as EarthBound, but when I try to save the tags on, say, a Super Mario All-Stars track I get the error "Could not update tags (bad allocation) on: ___.spc".
Bad dump?  Or foo_gep issue?  I thought the snesmusic.org tracks were supposed to be of the highest quality, and Super Jukebox seems to be able to tag them...

Update the component and try again.