what's up gamers i got Ogg/Vorbis decoding in real-time on the GBA

@unascribed and most of last night was just scrambling for good documentation and screaming at -fomit-frame-pointer for breaking function pointers in a weird way

gross but not 

@iliana this was just an experiment to see if i could avoid making a reaper-to-midi-to-mod/xm asset pipeline for anodyne's music. turns out I don't have any CPU left to run a game next to this, but it was cool to get working anyway

@vikxin almost none, haha.. i had to experiment with parameters just to get it to keep up with playback. there's ideas for optimization i have, like seeing if any of the decoder's buffers can be moved from ewram to iwram, and modifying the decoder to output 8-bit pcm instead of 16-bit data that needs to be converted before DMA can pick it up

@lifning Those are both pretty valuable optimizations here. The IWRAM probably significantly moreso actually.

@lifning I don't know how much space the decoder buffers use but so long as it's not >24kB total you might be able to move all of them to IWRAM actually.

@vikxin yeah, that'd take some fussing with a modified gba_cart.ld to move malloc's heap there.. which i'd do if i didn't have a game to get back to working on :P

@lifning Oh, are they dynamically allocated? You might be able to use a different malloc. Depending on how frequently they're freed, you might be able to use a pretty simple allocator.

@lifning halfway to making a foss version of those movie carts :P

@impiaaa 'course this barely keeps up and uses close to 100% of the CPU - though i bet "Theorarm" has decent odds of working on the DS with a bit of effort

Sign in to participate in the conversation

Cybrespace is an instance of Mastodon, a social network based on open web protocols and free, open-source software. It is decentralized like e-mail.