Previously, alist based ucodes were classified as either ABI1, ABI2 or ABI3.
This classification is too simple to take into account all versions/revisions
that really exist in the wild. Furthermore, it prevents from implementing some
version/revision specific behaviors.
There are indeed 3 big "families" of alist based ucodes:
-ABI1 (or audio) which seems to be the very first version developed.
It was distributed to 3rd party devs and is the most common.
2 minor revisions were made by Rare for GoldenEye, BlastCorp and DiddyKongRacing.
-ABI3 (or naudio) which is the later revision.
It was as distributed to 3rd party devs as well and is the second most common.
4 revisions were made by Rare for BanjoKazooie, DonkeyKong, BanjoTooie, JetForceGemini,
MickeySpeedway, PerfectDark and ConkerBadFurDay.
-ABI2 (or what I'd call NEAD) which was Nintendo Entertainment Analysis & Development exclusive.
There are many versions/revisions in this category (almost one for each game they developed).
This commit try to better identify audio ucodes.
Structure fields alignment is compiler dependent and therefore can be fragile.
We replace all occurences of OSTask_t structure by memory access primitives.
With this patch, delay-based effects should work.
Basically, the SFX stage mixes up to 8 delayed subframes together and add the
resulting subframe to left and right subframes. Furthermore, a filtered version
of this subframe is used to update the sample history.
Games that use the SFX stage include:
The World is not Enough, Tarzan, Resident Evil 2, Polaris SnowCross
Musyx ucode implementation should now be complete !