# A wheel taking over from a pad in a race, and the pad back (runtime/
# dinput_pad.c): the game's device of the old kind is let go (two polls at
# rest, then DIERR_INPUTLOST) and its rescan makes one of the new kind, with
# that kind's layout and steering.  @in+0x1e0 is the steering angle the car
# gets (16 bits, 0x2000 = full left), peeked 1, 2, 3, 4, 8, 16 and 46 frames
# after a full turn left at a standstill: the pad's turns the car's wheels
# towards the stick at a limited rate (0x416bb0), the wheel's is there in the
# first frame (0x4061c0).  Cross (A) is nitrous on the wheel, shift up on the
# pad (0x8656f8 NITRO_BOOST).
0     pad connect
+0    tappaduntil START MC_Background.fng 120 4000
+200  tappad A                                       # no profile
+0    waitfng GarageMain.fng 3000
+300  tappaduntil A UI_QRModeSelect.fng 150 3000
+200  tappaduntil A UI_QRTrackSelect.fng 150 1500
+200  tappaduntil A UI_QRModeOptions.fng 150 1500
+200  tappaduntil A UI_QRCarSelect.fng 150 1500
+200  tappaduntil A PC_Loading.fng 150 1500
+0    waitmem 0x8654a4 6 3000
+600  log --- the pad: full left ---
+0    axis LX -1
+1    peek @in+0x1e0 2
+1    peek @in+0x1e0 2
+1    peek @in+0x1e0 2
+1    peek @in+0x1e0 2
+4    peek @in+0x1e0 2
+8    peek @in+0x1e0 2
+30   peek @in+0x1e0 2
+0    axis LX 0
+30   log --- a wheel takes over ---
+0    pad connect wheel
+120  log --- the wheel: full left ---
+0    axis LX -1
+1    peek @in+0x1e0 2
+1    peek @in+0x1e0 2
+1    peek @in+0x1e0 2
+1    peek @in+0x1e0 2
+4    peek @in+0x1e0 2
+8    peek @in+0x1e0 2
+30   peek @in+0x1e0 2
+0    axis LX 0
+30   trigger RT 1
+120  pad A down
+20   peek 0x8656f8
+0    pad A up
+0    trigger RT 0
+30   log --- the pad back ---
+0    pad connect
+120  axis LX -1
+1    peek @in+0x1e0 2
+1    peek @in+0x1e0 2
+30   peek @in+0x1e0 2
+0    axis LX 0
+30   trigger RT 1
+120  pad A down
+20   peek 0x8656f8
+0    pad A up
+0    trigger RT 0
+60   quit
