These offsets are for the current Steam version of the game. (Offsets are for memory locations of process in OllyDbg, hex-editor offset of each first instruction appears in parenthesis)Ġ0486906 0FB644FB 17 MOVZX EAX,BYTE PTR DS: (original code)Ġ04E9764 803D 5EFA6401 00 CMP BYTE PTR DS:,0 (original code)Ġ04E97B1 E9 47010000 JMP 004E98FD (original jump)Ġ0486906 E9 B58E1300 JMP 005BF7C0 (jump to retrieve analog triggers)Ġ04E9764 E9 E75F0D00 JMP 005BF750 (jump to apply analog steering)Ġ04E97B1 E9 CA5F0D00 JMP 005BF780 (jump to apply analog accel/brake)Ġ05BF750 803D 58286A01 00 CMP BYTE PTR DS:,0 (check for analog steering input)Ġ05BF757 74 0F JE SHORT 005BF768 (if none, skip to original code)Ġ05BF759 8A15 58286A01 MOV DL,BYTE PTR DS: (read analog steering input)Ġ05BF75F 80C2 7F ADD DL,7F (add 127 for 0 to 255 range)Ġ05BF762 8815 60286A01 MOV BYTE PTR DS:,DL (copy to steering variable)Ġ05BF768 803D 5EFA6401 00 CMP BYTE PTR DS:,0 (original code)Ġ05BF76F E9 F59FF2FF JMP 004E9769 (return)Ġ05BF780 833D 002A6A01 00 CMP DWORD PTR DS:,0 (check for analog accel/brake input)Ġ05BF787 0F84 70A1F2FF JE 004E98FD (if not, perform original jump)Ġ05BF78D 8A0D 002A6A01 MOV CL,BYTE PTR DS: (read analog brake input)Ġ05BF793 8A15 012A6A01 MOV DL,BYTE PTR DS: (read analog accel input)Ġ05BF799 8815 61286A01 MOV BYTE PTR DS:,DL (copy to accel variable)Ġ05BF79F 880D 62286A01 MOV BYTE PTR DS:,CL (copy to brake variable)Ġ05BF7A5 E9 53A1F2FF JMP 004E98FD (original jump)Ġ05BF7C0 0FB644FB 16 MOVZX EAX,BYTE PTR DS: (get analog brake xinput)Ġ05BF7C5 A3 002A6A01 MOV DWORD PTR DS:,EAX (copy to temp variable)Ġ05BF7CA 0FB644FB 17 MOVZX EAX,BYTE PTR DS: (original code)Ġ05BF7CF A2 012A6A01 MOV BYTE PTR DS:,AL (copy to temp variable)Ġ05BF7D4 E9 3271ECFF JMP 0048690B (return) Version 1.01 - Attempt to fix compatibility issue. Version 1.02 - Fix for DEP compatibility issue. If redistributing the file, please include this readme. This modified version of the game shouldn't cause any harm to your system, but use at your own risk. Keyboard and D-Pad input should be unaffected. Controllers that are not compatible with XInput should revert to a digital button input for acceleration and braking, but analog steering should still work. Analog acceleration and braking work with the 360 controller's triggers, and will likely work with other compatible XInput gamepads as well.
If you ever want to reset the game back to its unmodified state, you can select 'Verify Integrity of Game Cache' from this same screen.Īnalog steering tested to work with a 360 controller, Logitech Rumblepad 2, and other controllers. If you don't know where the game's folder is, you can open it by right-clicking the game in Steam, selecting 'Properties', 'Local Files', 'Browse Local Files'.
If the game ever updates, you may have to reinstall this fix, unless SEGA fixes the official version as well.
Just copy Crazy Taxi.exe to the game's folder, replacing the original file. This fix enables analog controls for steering, acceleration and braking in the Steam release of Crazy Taxi.