I'm looking to solve the problem with Windows sometimes recognizing my player 2 joystick before my player 1 joystick and be able to disconnect my joysticks and reconnect them and have windows recorgnize them in the correct order.
Why don't you start with describing your OS and HW. Also, just to verify you have to be able to unplug and replug in your joysticks? Can you plug them into the same port and in the same order or is that not guaranteed?
To do this I see 2 viable options:
1) The HARD way: make a USB controller and hub that will transpose a unique identification header to each port, uniquely identifying them in Windows XP. Since USB is packet based, I don't see this as being TOO much different than NAT, for example, but implemented on a chip. This way would take Windows out of the equation so it may end up being more reliable. This option also might be HID-only (maybe even HID-type-specific?) though, I'm not sure.
Good luck with that. You'd end up implementing the USB spec and still might not work.
2) The EASY way: Make/modify a USB hub so that it when you turn it on it sequentially provides power to each port, forcing Windows to recognize each device in sequence. This option still relies on Windows to be speedy in recognizing the devices, otherwise you either have a long delay before all your devices are recognized or the Windows might trip over itself and still not recognize them in order.
Doable, but may not solve the problem and may not be necessary.
I'm looking for a good starter EE project and if option 2 proves viable then I'm going to head down that path.
What do you guys think?
I'm assuming they are the exact same joysticks.
First here are a few things that can help the situation, not guaranteed.
1. With devices unplugged, Go to Device Manager.
2. View show hidden devices.
3. Delete all instances of your joysticks.
Now, assuming what you said in your second option you can use a hub, and have the joysticks plugged into that hub in the same spots.
4. Get a hub, plug it in and have windows recognize it.
5. Plug joystick 1 into the first port. (Hopefully, this will be the first port of the hub ic as well, you can actually check this if you want to go through a few more steps later)
6. Plug joystick 2 into the second port.
Leave them that way and do some testing to see if it works.
There's more if it doesn't work, but try this first.