Some bad news, the dual OPL2 emulation is not going to work.
OPL3 has a bit that when set, enables all the extra features over OPL2, like extra channels and panning capability, and when cleared, the features become locked away.
The idea was that I enable OPL3 features, set panning on all channels to left or right, then disable OPL3 features, and the setting sticks...
And it does, but only as long as that register is not written to again, in which case both channels are forced on again, and unfortunately that same register holds parameters any OPL2 thing will touch too so it is guaranteed the panning gets reset.
While I can have OPL3 inside YMF704/721 panned to one side, through a dedicated volume register on OPL4 section that controls FM and PCM balancing which games will be unaware of, there's no such thing on OPL3 on the YMF71x side, and because external OPL3 is routed to same mixer level as internal OPL3 I cannot just pan the mixer and get the desired effect either.
Games would be able to detect presence of two OPL2 like chips however, but proper stereo will not be happening since one chip plays both channels always. Only way will be to mix the external OPL3 into CD input, then the FM+WB input can be panned from mixer and problem is solved. This however needs actual new board revision, and I am not going to be doing that and since it requires dedicated software+hardware support to set it all up and I won't spend time on a feature that cannot be properly implemented.
SB mixer locking is working good, games cannot change the levels that are locked. This is the most useful feature I think.
Software end has most of the hardware access related stuff done, it can properly initialize the whole card and has useful error messages etc. througout. Currently the init program is just about 8KB in size and I expect it to get to around 20KB once UI is added. It is several times faster and smaller than the previous program, primarly thanks to being an assembly program instead of a QB45 thing ~