NScumm.Core.Audio.SoftSynth.AdlibMidiDriver.AdlibGetRegValueParam C# (CSharp) Method

AdlibGetRegValueParam() private method

private AdlibGetRegValueParam ( int chan, byte param ) : int
chan int
param byte
return int
        int AdlibGetRegValueParam(int chan, byte param)
        {
            byte channel;

            Debug.Assert(chan >= 0 && chan < 9);

            if (param <= 12)
            {
                channel = operator2Offsets[chan];
            }
            else if (param <= 25)
            {
                param -= 13;
                channel = operator1Offsets[chan];
            }
            else if (param <= 27)
            {
                param -= 13;
                channel = (byte)chan;
            }
            else if (param == 28)
            {
                return 0xF;
            }
            else if (param == 29)
            {
                return 0x17F;
            }
            else
            {
                return 0;
            }

            var asp = setParamTable[param];
            int val = AdlibGetRegValue((byte)(channel + asp.RegisterBase));
            val &= asp.Mask;
            val >>= asp.Shift;
            if (asp.Inversion != 0)
                val = asp.Inversion - val;

            return val;
        }