Still not done with battle sfx because not only does it use akao and separate functions - but now it also has another set of play stop pause resume set vol etc set of functions... The Submarine minigame uses them for the warning sound, battle uses them for multiple effects (like Summons / Ultima), which is just yet another duplication. It's bizarre. The game is held together with blu-tac.
This is what happens when you don't have a set design from the word go and allow programmers to just do what they want. Then port team come along and add to the cluster fuck.
edit.
Well, here's kind of how it works
Field main > subfunctionsA (mainly field)
Battle Main > subfunctionsA and subfunctionsB (Battle only)
subfunctionsB (called directly from submarine (warning sound), very likely others)
SubfunctionsA (called directly from battle)
So you see, Field, Battle, and Other Main are just wrapper functions to be sent to sub functions. Akao (field) wrapper can do everything that the others can from what I can see... but look above... Battle main is a separate wrapper to do things that already exist in Akao (including a function that exists in SubfunctionsB to add effects at the same time). And subfunctions are often called directly without any wrapper. The wrapper HAS to be used from field. But from battle and minigames, your guess is as good as mine. They just did as they saw fit.
What I am getting at is that if used properly, the field akao wrapper that the field module uses could do everything and there was no need for any other wrappers or subfunctionsB.
I don't know if subfunctions B existed in PSX version. I'm thinking like the midi functions, these were added by the porting team.