The launch angle for each regular hit is randomly chosen between an upper and lower bound for each type of hit (slap/charge), the contact quality type, and from a selected range from another random process.
(These are byte angles, which are out of 4096 instead of 360. To convert from degrees to bytes, just do (desired degrees) * 4096/360. Numbers above 4096 get normailzed to be between 0 and 4096)
Range Lower Bound Angle Upper Bound Angle
Range 0
Range 1
Range 2
Range 3
Range 4