Instead of overwriting half the original function, we just replace the calls to GetCategoryVolume with calls to our hooking functions located in a codecave (thank god what an awesome feature). Also makes it easier to maintain this patch and gives us volume control for each category independently.
Overwrites parts of the setup code in fw::CSoundManager::setupCategory() to not call GetCategoryVolume but instead use values we control. Parts of the original code (calls to GetCategoryIndex) have to still happen!
We're quite limited with the amount of space we have available to us. There has to be a better way...