So if you run the hard drivin compact roms, you should be able to successfully calibrate the wheel, but you must use a mouse. Moving the mouse for ages to the right will simulate 4 wheel rotations and the calibration should report:
NEW CNTSPTRN 1024 PATCEN 0
Thus one complete wheel rotation amounts to 1024 (0x400) encoder values.
Note. You might want to hold the left shift key to get the encoder value spot on at the end of the calibration (when its working out the PATCEN thing).
In the game, the centre edge bit (That "result ^= 0x4000" stuff) will 'latch' each time the wheel does a full rotation (reaching its centre point). The encoder wheel value at these centre points will be one of 0x000, 0x400, 0x800 or 0xC00.
I think that just as your car re-spawns is the moment when the game works which one of the centre points is the most appropriate (nearest). Let say you started the game around the 0x800 position, then you crash after turning hard right (and say the encoder at that moment is 0xD50). Then once you re-spawn, the game doesn't expect you to wind back the steering all the way to the 0x800 centre point (0xD50-0x550 encoder values), you'll only be expected to wind back the steering to the 0xC00 centre point (0xD50-0x150 encoder values).
So now after you crash, when you get the car to go in a straight forwards direction and observe the encoder value (left shift), you should notice it'll always be around one of those those centre points (0x000, 0x400, 0x800, 0xC00). The game does have to be correctly calibrated in the service menu for this to work accurately.
I hope that what is happening!