Gameboy Advance player for ulc-codec.
As a proof of concept of the decoding complexity of ulc-codec, a Gameboy Advance demonstration was made. CPU usage is around 65% for 32768Hz @ 128kbps (M/S stereo) (or 70% when using LUT mode for [IM]DCT). Note that this is entirely a proof of concept; decode time for BlockSize=2048 (default for encoding tool) is 2-3 frames, so usage in real applications would need some form of threading to avoid excessive lag.
To use this player, you must:
- Provide your own
SoundData.ulc
and modifyulcplayer.s
to match. - Modify the
PATH
variable in theMakefile
to point to your build tools - Compile with a suitable ARM assembler+linker (wholly written in assembly; no compiler needed)
By default, the player uses a quadrature oscillator for [IM]DCT routines, and supports both mono and stereo files and any block size up to 2048.
For stereo audio and a maximum block size of 2048 samples, memory usage is 3.1KiB IWRAM code, 24KiB IWRAM data, ~8KiB EWRAM data, and 236 bytes of ROM (or 8.2KiB when using LUT mode).
Note that the colour blending isn't perfect (due to GBA limitations). For best results, the backdrop should have high-contrast detail to mask blending artifacts.
- Ruben Nunez - Initial work - Aikku93
- Credit goes to the following artists for their tracks used as demos:
Files:
Featuring:
- Damian Ray - In My Brain (Rayvolt Remix)
- Dr. Peacock - Vive La Volta (Sefa Remix)
- Irradiate - Edge of Infinity (In Our Blood)
- Juju Rush - Catching Fire
- Nosferatu & Nolz - Cosmic Conquest
- Rayvolt - And We Run
- Re-Style & Runeforce - A New Dawn
- Re-Style & Vertex - Shadow World
- Re-Style ft. Cammie Robinson - Feel Alive
- Runeforce ft. Lune - Lonely Soldier
- Sefa & Crypton - Lastig
- Vertex - Collective Paranoia
- Vertex - Let It Roll
- Vertex - Radiance
ulc-codec's decoding library has been ported to NDS. See the project page for more details.