Ok, this is a bit of a read so be prepared to read a while, but i bet you will like it by the time your done.
What started your research into this? Well, I'm a huge razer fan, they have been making gaming mice for years (website -
www.razerzone.com ). When they announced their latest mouse (the Diamonback) I was thrilled. A fan site soon posted a preview of it along with the initial specifications. The specifications stated that the mouse had a 1ms lag. Now your thinking wtf mouse lag? My mouse doesn't lag! Actually it does (I'll explain later, farther down). The later official retail specs stated that it had 8ms lag. I was like "why the change from preview to retail?" and thus the questions started......
Lag? What?
At the moment (if your using XP and a USB mouse) your computer is asking your mouse 125 times a second for new information about movement. In other words, every 8ms (1 second=1000ms. 1000ms/125 = 8ms) your computer asks your mouse for "movement" data, turning it into cursour movement then on your screen. EVERY usb mouse plugged into an XP machine by is being asked every 8ms. (I'll explaing this too farther down)
The problem with this is that if you move your hand a lot in those 8ms, there will be a delay between that information being sent and translated into movement on the screen.
The less lag, the better because your hand motions will be translated into movement faster.
But what is it specifically about XP?
Well, to put it simply, XP does not adhere to the official USB specifications (read them here -
http://www.usb.org ). Officially when a "low-speed USB human interface device" connection is created, it is done like this : (1) PC acknowledges that a USB HID device has been plugged (2) PC asks mouse "how often, per second, should I ask you for move data?" (3) mouse gives answer (4) PC checks for move data at the rate the mouse specified. Windows 2000, 98, ME, Linux all do it that way, the right way. Windows XP (for reasons I do not know) does it differently : (1) PC acknowledges that a USB HID device has been plugged in (2) PC requests information 125 times a second (125hz) no more, no less. Notice that XP does not ask for how often it should ask the mouse for "move" data. What if the mouse supported the ability to be asked 1000 times a second? There is wasted potentiol right there! (many newer mice support 1000hz polling rates.)
Just gimmie the math/technical! Your silly newbie talk is too much....
WinXP = 1000ms/125hz = 8ms. XP polls mouse for info every 8ms.
High performance mice support 1ms polling as in :
Win2K = 1000ms/1000hz = 1ms. Win2K polls mouse for info every 1ms.
1ms lag(2k) vs. 8ms lag(xp). Less lag = better.
Ok, so what have you tried?
Well, like you, I want 1ms lag. Why would an older/inferior OS such as Win2000 be better at anything than Windows Xp?! So I figured, since Windows XP is very similar to Windows 2000 maybe I can try and copy over some system files to Windows XP from Windows 2000. I mean hey, they are both based on Windows NT and a lot of their system files are named exactly the same way, being used for exactly the same purposes. Well for about 2 weeks now (started Tue Sep 7th) I have been tinkering with all sorts of files. I started keeping other updated on my progress at another forum ( link - my alias is LeXo5 ). I had no success even with others helping me (thanks Buzztiger, akira-EJJ-, Hopkins). No matter what file I edited or copied over (and like wise for everyone else who was helping me) it still wouldn't update any faster than every 8ms! I also started threads in Microsoft's forums at these links (1) and (2) I still couldn't figure it out. All ofa sudden I came across TONS of information to sift through (see the razer thread for all the links and stuff, it's posted there on Tue Sep 14, 2004 6:03 pm if you wanna go look). I didn't have much time to work with any of it though since college is keeping me really busy (I should be doing homework right now..). I hoped others would work with it and find something.
USB, USB, USB, what about PS/2?
PS/2 is actually faster than USB (in windows XP) when it comes to mice by default. PS/2's refresh rate can be manually set for 200hz. 200hz = 5ms. Thats 3ms less lag in Windows XP's mouse polling of 8ms!
Ok, so what are you trying to tell me?
Well, when razer released the information that WinXP didn't officially support the USB specifications thus forcing 8ms mouse lag apprently a lot of people took notice. Obviously for gamers, less lag is better! Well, someone way smarter than me figured out how to increase the polling rate. He tried getting it up to 1000hz (so that XP would poll every 1ms) but his system became unstable. He did succedd in increasing it to 500hz though. 1000ms/500hz = 2ms. Every 2ms (with his patch) WinXP would ask the mouse for new information. Thats almost 1ms and its way better than PS/2!
I R stupid, me not understand u...
summary : winxp makes lag on mouse. lag bad. win2000 not lag on mouse. linux not lag on mouse. smart man make patch. me not smart man. patch make winxp as good as win2000. patch make winxp better for gaming with mouse. get patch at link far down below.
How will I know if the patch works?
Download the mouse rate checker (see links at end of article) and before you do the patch mouse your mouse around a whole lot on the programs window and look at the "average hertz." That will tell you how often your OS is updating the "move" information from your mouse. Remember to divide 1000 by your average hertz. That will get you the "lag" that your mouse is recieving in milliseconds. Also remember that 1000ms is 1 second.
Where can I get the patch?
Its not exactly a patch, more like instructions on what to do. Here is the link to the instructions (article - ). Below is the exact same instructions that I changed a bit. I found his instructions a bit confusing at first so I kinda re-wrote them here, see below
Quote:
|
Originally Posted by my_version_of_RaZiel's_instructions
(1) Download a free hex editor. Install it.
(2) Locate usbport.sys in C:\WINDOWS\system32\Drivers
(3) Make a backup of the file, save it as usbport.BAK or something like that.
(4) Go to Hex offset 00015D00 (for SP2. offset may differ from no-SP/SP1 systems.)
(5) See this string? : "3C 08 73 09 C6 86 0A 01" (note : if it isn't this, read Ry-00's comment farther down this page)
(6) Replace the string with either :
------"B0 02 73 09 52 8C 0A 01" (for 2ms polling)
------"B0 04 73 09 52 8A 0A 01" (for 4ms polling)
------"B0 01 73 09 52 8A 0A 01" (for 1ms polling, doesn't work for 99% of people)
(7) Reboot into safe mode. If you can't figure out how, let PC restart, when at booting screen (you know the one with the loading bar?) hold F8. Then select to boot into safe mode. If that doesn't work hit restart button on PC. Now when it gets to that point again it'll ask if you would like to boot normally or go into safe mode. Go into safe mode.
(8) Go into safemode (this is to avoid windows file protection), place the patched usbport.sys backup you made into both
C:\WINDOWS\system32\drivers AND C:\WINDOWS\system32\dllcache (a hidden folder). Let it replace the files there.
(9) Reboot, and it should all work fine. Use rate checker to verify that it worked.
NOTE: the string that is mentioned in step 6 may be differnt for some people. Some ppl with WinXP and no servicepack update have these values (or some thing similar) "3C 08 73 09 C6 86 02 01" in the original file instead. You can still patch it, just don't change the "... 02 01" (or whatever) at the end.
Mice and reported success:
Intellimouse Explorer 3 - 250&500hz
Logitech MX300/310/500 - 250&500hz
Logitech MX510 - 250&450hz
Razer Viper - 250&500hz
|
mouse rate checker 1.1b
mouse rate checker 1.1b
If you could, could you please comment on whether you understood this article? I had a really hard time trying to make it understandable even for those who don't know that much about computers.
EDIT : I want to stress that those instructions are just my version. I am not taking credit for RaZiel's discovery. RaZiel is insanely intelligent to have found that and gets all my respect.
EDIT 2 : I used the patch and upped my Razer Viper's polling to 2ms from WinXP's 8ms. Worked for me.
EDIT 3 : well I just heard this :
Quote:
|
Originally Posted by milan03 from razer forums
... intellimouse 4.0... wont allow you to do anything over 125hz. if you try patching, it'll lock the rate at 100hz ! mx510 has some hardware issues, so you can get only 449hz. i have reports that old microsoft optical blue can achieve 1000hz in winXP so if any of you have it, plz give it a try.
|
EDIT 4 : This edit is dated 9-12-06, this post is really old, just recently got bumped and all the links in here are pretty much null and void so I have taken them out. You can still get mouse rate checkers, polling rate tweak tools and all that in the download section at
http://razerblueprints.net/