Skip to content
mpyne edited this page Mar 14, 2015 · 16 revisions

game-music-emu has moved!

Since it looks like it's time to leave our old code hosting location, I've taken the liberty of moving the game-music-emu project over to Bitbucket.

Blargg asked me back in June 2014 to go ahead and take over maintenance if I wanted... and the long delay in the interim is a pretty accurate indicator of how badly I really wanted to do it. But I would feel bad if the code just went away so I'll at least make sure it lands safely somewhere.

Source

The source code has been converted from a Subversion repository to use Git. The Bitbucket importer is sadly quite basic, so I ended up having to re-do the import myself, but the logs should all be there (aside from one "unknown" I let creep in as an author somehow).

Source

The last released tarball (for version 0.6.0) is available from the Downloads page.

Old Issues / Wiki pages

I'll see about porting old wikis if useful. But the couple dozen bug reports are more difficult to import (at least from my end, since I'm not an admin of the old site).

I have at least opened up this repository to issues and wiki changes, so please feel free to copy your old bugs if you're still running into them.

  • Michael Pyne, 2015-03-12

Building game-music-emu

You'll need at least CMake version 2.6.

Then you'll need to do something like this: (note these are Linux/UNIX instructions. Although CMake should work on Mac OS X and Windows I don't have those systems available to test, and you can always still build it yourself like you could before :P):

#!sh
$ tar xjvf game-music-emu-0.6.0.tar.bz2
$ cd game-music-emu-0.6.0
$ mkdir build
$ cd build
$ cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local # See below for more options
$ make && sudo make install

  • The cmake ../ part is to run CMake, passing the parent directory (../) as the source directory.
  • -D for CMake begins a definition, so -DCMAKE_INSTALL_PREFIX=/usr/local sets the CMAKE_INSTALL_PREFIX (where CMake installs to) to /usr/local. You can change this to be anywhere you'd like to install game-music-emu.
  • Compiling in only certain game music emulators is supported. By default, all available types are compiled in. You can remove a type by passing -DUSE_GME_type=FALSE on the command line when running CMake. Make sure to pass more than one if you have more than one type to remove. The valid options are listed below:

Emulator types

Emulator type CMake option
Spectrum ZX -DUSE_GME_AY=0
Game Boy -DUSE_GME_GBS=0
Sega Genesis -DUSE_GME_GYM=0
NEC PC Engine / TurboGrafx-16 -DUSE_GME_HES=0
MSX / Other Z80 -DUSE_GME_KSS=0
NES -DUSE_GME_NSF=0
NES Extended support -DUSE_GME_NSFE=0
Atari SAP -DUSE_GME_SAP=0
SNES -DUSE_GME_SPC=0
Sega VGM/VGZ -DUSE_GME_VGM=0

Note that some emulator code is shared. For instance the audio processing code used by Spectrum ZX happened to also be used by PC Engine, so if you select PC Engine and disable Spectrum ZX, you may notice a bit of code still being used, but this is not an error.

Detecting conditionally compiled emulators

If you're a developer using libgme the only public API is the one defined in gme/gme.h

This API includes a gme_type_list() function, which you must call at runtime. It returns a NULL-terminated list of available types (alternately, you can simply try to play a file and allow libgme to fail if it doesn't support it).

Testing

To test the library, you can use the included (and very simple) GUI player application (which requires libSDL) in the player/ directory. It is not built by default, but you can cd to the game-music-emu/build/player directory and run make from there after you've already run CMake.

From there just run ./player /path/to/file on any supported file type.

Contact

If you have issues building you can contact Michael Pyne at mpyne at kde org. I know a bit about emulation but absolutely nothing about the actual internals of how any of the emulator cores operate, so you'll still need to ask blargg or someone else if you have troubles with the actual operation of the emulators. But fair warning, no one else seems to still be around.

Clone this wiki locally