View Full Version : ZC Side Project Needs Programmers

Dark Nation
03-16-2005, 11:37 AM
ZC currently plays several types of music formats (.MOD, .IT, .XM, .S3M, .SPC, .MP3, and .OGG). I am wanting to add other formats to it. Specifically, .NSF (8-bit NES music) files. Another nice format to have would be .GBS (GameBoy music) files.

To this end, I've created a stand-alone music player that uses the same audio core that ZC does to allow third parties to work on this, should they wish to do so.

Ideally, the additions would be separate, Allegro-compatible libraries, like the 4 already in use (DUMB, AlSPC, AllegroMP3, and AllegroOGG), that would snap into the main library (music.cpp), which is called by the player (play.cpp). Also, as .NSF (and .GBS) files may contain multiple songs, the music_start() function will need to modified (as you see fit) to allow a desired track to be specified.

Included in the attached zip file are the source code for the player and the main music library. The 5 supporting libraries will have to be downloaded separately from the links below, then compiled and installed in order to get the main project to compile.

Finally, this must be a cross-platform library. No assembly, C only. Also, it must be endian-independant.

One possible starting point would be to use code from FakeNES 0.3.1 (http://sourceforge.net/project/showfiles.php?group_id=39844).

Another possibility is NoSeFart 2.3 (http://sourceforge.net/project/showfiles.php?group_id=66254&package_id=64140), (a cross-platform NSF player).

For GBS files, you could start with the Meridian GBS WinAmp Plugin 0.1b (http://meridian.overclocked.org/files/in_gbs_src.zip).

Preferably, the library you create would be a modification to one of the above suggested libraries (or another open source library available on the Internet) so that it can be updated easily when they are, but this is not a requirement.

Here are the links to the 5 main supporting libraries (if a library is listed twice, download the one for your platform):

Allegro is the main audio (and graphics, etc., but we are only dealing with audio right now) library that the other libraries use.
The two following files are the ones used by Zelda Classic currently:
Allegro for Windows/DOS (http://prdownloads.sourceforge.net/alleg/all4116.zip?download)
Allegro for Linux/Mac OS X (http://prdownloads.sourceforge.net/alleg/allegro-4.1.16.tar.gz?download)

The two following files are, at the time this post was made, the most current versions of the above two files:
Allegro for Windows/DOS (http://prdownloads.sourceforge.net/alleg/all4118.zip?download)
Allegro for Linux/Mac OS X (http://prdownloads.sourceforge.net/alleg/allegro-4.1.18.tar.gz?download)

DUMB is the library that ZC uses for playing .MOD, .IT, .XM, and .S3M files.
DUMB for DOS/Windows (http://prdownloads.sourceforge.net/dumb/dumb-0.9.2-fixed.zip?download)
DUMB for Linux/Mac OS X (http://prdownloads.sourceforge.net/dumb/dumb-0.9.2-fixed.tar.gz?download)

AllegroMP3 handles the .MP3 files:
AllegroMP3 (cross-platform) (http://www.hero6.com/filereviver/almp3.zip)

AllegroOGG deals with the .OGG files (another highly-compressed wave file, like .MP3)
AllegroOGG (cross-platform) (http://www.hero6.com/filereviver/alogg.zip)

AlSPC plays .SPC files
AlSPC (cross-platform) (http://www.armageddongames.net/darknation/alspc_src.zip)

Anyone who submits a library that gets used will be given credit in Zelda Classic. Any and all music formats are welcome, though NSF (especially) and GBS are my main concern at the moment.

Here is the music player that needs to be modified: music.zip (www.armageddongames.net/darknation/music.zip)

Dart Zaidyer
03-18-2005, 10:17 AM
Just a word of caution: If anyone is going to try working on SPC playback, take note that Al-SPC sucks right out of the box. It seems to be based on one of the worst emulation routines for the SNES in existence. You have to tune it to get rid of the helium-esque tone difference, and even after that it's still kind of slow. I have several references comparing the output to a real SNES if you need proof.

I think the only reason we're using it is because it's the only one available in Allegro. Still, it would be better to just replace it altogether.

Dark Nation
03-20-2005, 03:19 AM
The helium problem has been fixed (or at least lessened). I have neither the time nor inclination to write another SPC player for ZC. For most people, what's there is sufficient. If anyone hates it enough to write their own Allegro-compatible, cross-platform SPC player and send it to me, I'll be more than happy to add it and give them credit.

In any event, this thread is about adding .NSF (and maybe .GBS) support to to ZC; I fail to see how the quality of the SPC playback code matters to this topic.

Dart Zaidyer
03-20-2005, 01:07 PM
Well, as long as you're handing out the tools to work on any part of the entire music system, I figured I might as well mention it.

But yeah, NSF should really be a high priority, since it would go a long way for the NES quests.