NScumm.Core.Audio.PCSpeakerDriver.GetEffectModLevel C# (CSharp) Method

GetEffectModLevel() private method

private GetEffectModLevel ( short level, sbyte mod ) : short
level short
mod sbyte
return short
        short GetEffectModLevel(short level, sbyte mod)
        {
            if (mod == 0)
            {
                return 0;
            }
            else if (mod == 31)
            {
                return level;
            }
            else if (level < -63 || level > 63)
            {
                return (short)((mod * (level + 1)) >> 6);
            }
            else if (mod < 0)
            {
                if (level < 0)
                    return GetEffectModifier((ushort)(((-level) << 5) - mod));
                else
                    return (short)-GetEffectModifier((ushort)((level << 5) - mod));
            }
            else
            {
                if (level < 0)
                    return (short)-GetEffectModifier((ushort)(((-level) << 5) + mod));
                else
                    return GetEffectModifier((ushort)(((-level) << 5) + mod));
            }
        }