Well I'm not sure what dial you are referring to, but I assume it is a one axis analog input. You could simply multiply the joystick input by a scaling factor (of course after first centering the joystick input around zero by subtracting 127) based on the value of this dial. It would probably be something like this (using the functions from my first example):
Code:
motorOutput = unsignValue(signValue(joystickInput) * (dialInput/255));
That is a pretty cool feature, but I think an open loop filter on the inputs should probably give you enough control without doing that.