Skip to content

copyrat90/advgm

Repository files navigation

advgm

advgm is a DMG VGM music player for the Game Boy Advance.

Usage

  1. Export the Gameboy VGM from furnace.

    1. Make sure the System is set to Game Boy,
      and the Base Tempo is set to 150 (= Tick Rate is set to 60).
    2. file > export...
    3. Select VGM tab.
    4. Set the format version to 1.61.
    5. Click Export.
  2. Run tools/advgm_converter.py to turn the exported VGM into the binary format.

    # Convert as a binary.
    python tools/advgm_converter.py --input my_music.vgm --output my_output.bin
    
    # Convert as a C array source.
    #
    # The identifier of the C array would be same as the output filename
    # (In this case, it would be `my_output`.)
    python tools/advgm_converter.py --input my_music.vgm --output my_output.c --c-array
    
    # You can also give a custom identifier to this C array.
    python tools/advgm_converter.py --input my_music.vgm --output my_output.c --c-array my_music_identifier
  3. Add the converted music binary/source to your project, and pass a pointer of it to the advgm_play().

  4. Add advgm_vblank_callback() call in your vblank callback handler.

See include/advgm.h for the API.

Limitations

There are some limitations, mostly due to the hardware restrictions.

  • Instrument > Use software envelop doesn't work.
  • Base Tempo must be always 150 (= Tick Rate must be 60).
    • You can use Virtual Tempo if you want different tempo, but note that it doesn't always evenly divide the rows, and the arpeggios might sound funky.
    • Obviously, effects that alters the tick rate is not supported either (Cxxx and F0xx).

License

This project is licensed under the BSD Zero Clause License.

You can use this freely without attribution.

History

This project started as a fork of akkera102's VGM player (vgm2gba), but I've turned it into a seperate repository to properly manage it.

About

DMG VGM player for GBA

Resources

License

Stars

Watchers

Forks

Packages

No packages published