Page 1 of 1

Win xp device driver for 3dpro...

Posted: Tue Jan 22, 2008 10:10 am
by Strife
Now... I know we have the 3dpro usb adapter and all... but that seems to not be an option with no one making them anymore... Wouldn't there be a way to create your own xp driver that would support the 3dpro?

Posted: Tue Jan 22, 2008 10:12 am
by Foil
The XP drivers do support the 3DPro if you have it connected via gameport. Those drivers are built-in for XP.

Posted: Tue Jan 22, 2008 10:22 am
by Strife
Those Drivers do NOT support the 3dpro correctly. It will show up as being there... but not connected.

Posted: Tue Jan 22, 2008 10:43 am
by Strife
This is the inf for xp(half of it).... Below is the one for 98... Big differences... anyone know if we could simply change a few things to make this damn stick work right?

[Version]
Signature=\"$WINDOWS NT$\"
ClassGuid={4D36E96C-E325-11CE-BFC1-08002BE10318}

Class=MEDIA
Provider=%MSFT%
LayoutFile=layout.inf
DriverVer=07/01/2001,5.1.2600.0

[DestinationDirs]
SideWinder_Device.CopyFiles.NT = 12
SideWinder_Device.CopyFilesDLL.NT = 11
SideWinder_FFP_Device.CopyFilesDLL.NT = 11
SideWinder_FFW_Device.CopyFilesDLL.NT = 11

[ControlFlags]
ExcludeFromSelect= *

[Manufacturer]
%MSFT%=MSFT

[MSFT]
%SideWinder.AutoDetect%=SideWinder_Auto, Gameport\\SideWinderGameController
%SideWinder.SW3dPro%=SideWinder_3DP, Gameport\\SideWinder3DPro
%SideWinder.gamepad%=SideWinder_GP, Gameport\\SideWindergamepad
%SideWinder.PrecisionPro%=SideWinder_PP, Gameport\\SideWinderPrecisionPro
%SideWinder.ForceFeedbackPro%=SideWinder_FFP, Gameport\\SideWinderForceFeedbackPro
%SideWinder.FreestylePro%=SideWinder_FSP, Gameport\\SideWinderFreestylePro
%SideWinder.ForceFeedbackWheel%=SideWinder_FFW, Gameport\\SideWinderForceFeedbackWheel

[SideWinder_Auto.NT]
CopyFiles=SideWinder_Device.CopyFiles.NT, SideWinder_Device.CopyFilesDLL.NT
AddReg=SideWinder_Auto.AddReg
AddReg=SideWinder_3DP.AddReg
AddReg=SideWinder_GP.AddReg
AddReg=SideWinder_PP.AddReg
AddReg=SideWinder_FFP.AddReg
AddReg=SideWinder_FSP.AddReg
AddReg=SideWinder_FFW.AddReg

[SideWinder_3DP.NT]
CopyFiles=SideWinder_Device.CopyFiles.NT, SideWinder_Device.CopyFilesDLL.NT
AddReg=SideWinder_Auto.AddReg
AddReg=SideWinder_3DP.AddReg
AddReg=SideWinder_GP.AddReg
AddReg=SideWinder_PP.AddReg
AddReg=SideWinder_FFP.AddReg
AddReg=SideWinder_FSP.AddReg
AddReg=SideWinder_FFW.AddReg

[SideWinder_GP.NT]
CopyFiles=SideWinder_Device.CopyFiles.NT, SideWinder_Device.CopyFilesDLL.NT
AddReg=SideWinder_Auto.AddReg
AddReg=SideWinder_3DP.AddReg
AddReg=SideWinder_GP.AddReg
AddReg=SideWinder_PP.AddReg
AddReg=SideWinder_FFP.AddReg
AddReg=SideWinder_FSP.AddReg
AddReg=SideWinder_FFW.AddReg

[SideWinder_PP.NT]
CopyFiles=SideWinder_Device.CopyFiles.NT, SideWinder_Device.CopyFilesDLL.NT
AddReg=SideWinder_Auto.AddReg
AddReg=SideWinder_3DP.AddReg
AddReg=SideWinder_GP.AddReg
AddReg=SideWinder_PP.AddReg
AddReg=SideWinder_FFP.AddReg
AddReg=SideWinder_FSP.AddReg
AddReg=SideWinder_FFW.AddReg

[SideWinder_FFP.NT]
CopyFiles=SideWinder_Device.CopyFiles.NT, SideWinder_FFP_Device.CopyFilesDLL.NT
AddReg=SideWinder_Auto.AddReg
AddReg=SideWinder_3DP.AddReg
AddReg=SideWinder_GP.AddReg
AddReg=SideWinder_PP.AddReg
AddReg=SideWinder_FFP.AddReg
AddReg=SideWinder_FSP.AddReg
AddReg=SideWinder_FFW.AddReg

[SideWinder_FSP.NT]
CopyFiles=SideWinder_Device.CopyFiles.NT, SideWinder_Device.CopyFilesDLL.NT
AddReg=SideWinder_Auto.AddReg
AddReg=SideWinder_3DP.AddReg
AddReg=SideWinder_GP.AddReg
AddReg=SideWinder_PP.AddReg
AddReg=SideWinder_FFP.AddReg
AddReg=SideWinder_FSP.AddReg
AddReg=SideWinder_FFW.AddReg

[SideWinder_FFW.NT]
CopyFiles=SideWinder_Device.CopyFiles.NT, SideWinder_FFW_Device.CopyFilesDLL.NT
AddReg=SideWinder_Auto.AddReg
AddReg=SideWinder_3DP.AddReg
AddReg=SideWinder_GP.AddReg
AddReg=SideWinder_PP.AddReg
AddReg=SideWinder_FFP.AddReg
AddReg=SideWinder_FSP.AddReg
AddReg=SideWinder_FFW.AddReg

[SideWinder_Device.CopyFiles.NT]
msgame.sys
hidclass.sys
hidparse.sys

[SideWinder_Device.CopyFilesDLL.NT]
hid.dll
sw_effct.dll
sw_wheel.dll

[SideWinder_FFP_Device.CopyFilesDLL.NT]
hid.dll
sw_effct.dll

[SideWinder_FFW_Device.CopyFilesDLL.NT]
hid.dll
sw_wheel.dll

[SideWinder_Auto.NT.Services]
AddService = msgame,%SPSVCINST_ASSOCSERVICE%,SideWinder_MsGame_Service_Inst

[SideWinder_3DP.NT.Services]
AddService = msgame,%SPSVCINST_ASSOCSERVICE%,SideWinder_MsGame_Service_Inst

[SideWinder_GP.NT.Services]
AddService = msgame,%SPSVCINST_ASSOCSERVICE%,SideWinder_MsGame_Service_Inst

[SideWinder_PP.NT.Services]
AddService = msgame,%SPSVCINST_ASSOCSERVICE%,SideWinder_MsGame_Service_Inst

[SideWinder_FFP.NT.Services]
AddService = msgame,%SPSVCINST_ASSOCSERVICE%,SideWinder_MsGame_Service_Inst

[SideWinder_FSP.NT.Services]
AddService = msgame,%SPSVCINST_ASSOCSERVICE%,SideWinder_MsGame_Service_Inst

[SideWinder_FFW.NT.Services]
AddService = msgame,%SPSVCINST_ASSOCSERVICE%,SideWinder_MsGame_Service_Inst

[SideWinder_MsGame_Service_Inst]
DisplayName = %msgame.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\\msgame.sys
LoadOrderGroup = Extended Base

[SideWinder_Auto.AddReg]
HKLM,%szSWAutoDetect%,OEMName,0x00000000,%SideWinder.AutoDetect%
HKLM,%szSWAutoDetect%,OEMHardwareID,,\"Gameport\\SideWinderGameController\"
HKLM,%szSWAutoDetect%,OEMData,0x00000001,00,00,08,00,00,00,00,00
HKLM,%szSWAutoDetect%,Flags1,0x00000003,03,00,00,00

[SideWinder_3DP.AddReg]
HKLM,%szSW3DPro%,OEMName,0x00000000,%SideWinder.SW3dPro%
HKLM,%szSW3DPro%,OEMHardwareID,,\"Gameport\\SideWinder3dPro\"
HKLM,%szSW3DPro%,OEMData, 0x00000001, 03,00,00,10,08,00,00,00
HKLM,%szSW3DPro%,Flags1,0x00000003,03,00,00,00





98-----------------------------------------------


[Version]
layoutfile=layout.inf,layout1.inf,layout2.inf
Signature=\"$CHICAGO$\"
Class=MEDIA
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
provider=%Microsoft%
DriverVer=06/18/2000
[ClassInstall]
Addreg=Class.AddReg
ClassOrder=CLASS_ORDER_MEDIA
[Class.AddReg]
HKR,,,,%MediaClassName%
HKR,,Icon,,\"-1\"
HKR,,Installer,,mmci.dll
[Manufacturer]
%StdMfgName%=StdMfg
%Microsoft%=Microsoft
%ThrustMaster%=ThrustMaster
[StdMfg]
%HID_DEVICE_SYSTEM_GAME%=HIDGameDevice,HID_DEVICE_SYSTEM_GAME
[Microsoft]
%*PNPB02F.DeviceDesc%=MSJSTICK, *PNPB02F
%*PNPB02F.DeviceDesc%=MSJSTICK, *CTL7001
%*PNPB02F.DeviceDesc%=MSJSTICK, *CTL7002
%*PNPB02F.DeviceDesc%=MSJSTICK, *CTL7005
%*PNPB02F.DeviceDesc%=MSJSTICK, *CSC0001
%*PNPB02F.DeviceDesc%=MSJSTICK, MF\\PNPB00D_Dev2
%*PNPB02F.DeviceDesc%=MSJSTICK, MF\\PNPB00E_Dev3
%*PNPB02F.DeviceDesc%=MSJSTICK, MF\\PNPB019_Dev2
%*PNPB02F.DeviceDesc%=MSJSTICK, *AZT0003
%*PNPB02F.DeviceDesc%=MSJSTICK, *AZT3001
%*PNPB02F.DeviceDesc%=MSJSTICK, *YMH0006
%*PNPB02F.DeviceDesc%=MSJSTICK, *ESS0005
%*PNPB02F.DeviceDesc%=MSJSTICK, *YMH0022
[ThrustMaster]
%ThrustMaster.DeviceDesc%=TM, *PNPB02F
[PreCopySection]
HKR,,NoSetupUI,,1
[DestinationDirs]
MSJSTICK.CopyList = 11
GAMEPORT.CopyList = 11
STDUSBJSTICK.CopyFiles = 10,system32\\drivers
STDUSBJSTICK.DelFiles = 11
HIDGameDevice.Copy = 11
[MSJSTICK]
LogConfig=BasicJoyStick.LC0,BasicJoystick.LC1
CopyFiles=MSJSTICK.CopyList, GAMEPORT.CopyList
AddReg=JOYSTICK.AddReg, MSJSTICK.AddReg
UpdateInis=MSJSTICK.UpdateInis
KnownFiles=MSJSTICK.KnownFiles
DriverVer=06/08/2000
[TM]
LogConfig=ThrustMaster.LC0, ThrustMaster.LC1, ThrustMaster.LC2, ThrustMaster.LC3
CopyFiles=MSJSTICK.CopyList, GAMEPORT.CopyList
AddReg=JOYSTICK.AddReg, ThrustMaster.AddReg
UpdateInis=MSJSTICK.UpdateInis
KnownFiles=MSJSTICK.KnownFiles
DriverVer=06/08/2000
[*PNPB02F.det]
AddReg=PreCopySection
[BasicJoyStick.LC0]
ConfigPriority=HARDWIRED
IOConfig=201-201(3ff::)
[BasicJoyStick.LC1]
ConfigPriority=HARDWIRED
IOConfig=200-207(3ff::)
[ThrustMaster.LC0]
ConfigPriority=HARDWIRED
IOConfig=201-201(3ff::)
IOConfig=209-209(3ff::)
[ThrustMaster.LC1]
ConfigPriority=HARDWIRED
IOConfig=201-201(3ff::), 203-203(3ff::), 205-205(3ff::), 207-207(3ff::)
IOConfig=209-209(3ff::), 20b-20b(3ff::), 20d-20d(3ff::), 20f-20f(3ff::)
[ThrustMaster.LC2]
ConfigPriority=HARDWIRED
IOConfig=201-201(3ff::), 203-203(3ff::), 205-205(3ff::), 207-207(3ff::)
[ThrustMaster.LC3]
ConfigPriority=HARDWIRED
IOConfig=209-209(3ff::), 20b-20b(3ff::), 20d-20d(3ff::), 20f-20f(3ff::)
[STDUSBJSTICK.CopyFiles]
hidusb.sys
hidclass.sys
hidparse.sys
[STDUSBJSTICK.KnownFiles]
hidusb.sys=safe
[STDUSBJSTICK.DelFiles]
hidusb.sys
hidclass.sys
hidparse.sys
[MSJSTICK.CopyList]
vjoyd.vxd,,,32
msjstick.drv,,,32
[MSJSTICK.KnownFiles]
essjoy.vxd.4.3.0=force
essjoy.drv.4.3.0=force
[GAMEPORT.CopyList]
msanalog.vxd,,,32
[JOYSTICK.AddReg]
HKR,,DevLoader,,mmdevldr.vxd
HKR,Drivers,MIGRATED,,0
HKR,Drivers\\joystick,,,
[MSJSTICK.AddReg]
HKR,,Driver,,vjoyd.vxd
HKR,Drivers\\joystick\\msjstick.drv,Description,,%*PNPB02F.DeviceDesc%
HKR,Drivers\\joystick\\msjstick.drv,Driver,,msjstick.drv
HKR,Drivers,SubClasses,,\"joystick\"
[ThrustMaster.AddReg]
HKR,,Driver,,vjoyd.vxd
HKR,Drivers\\joystick\\msjstick.drv,Description,,%ThrustMaster.DeviceDesc%
HKR,Drivers\\joystick\\msjstick.drv,Driver,,msjstick.drv
HKR,Drivers,SubClasses,,\"joystick\"
[MSJSTICK.UpdateInis]
system.ini,drivers,\"joystick=\"
[HIDGameDevice]
CopyFiles=HIDGameDevice.Copy,MSJSTICK.CopyList
AddReg=HIDGameDevice.AddReg
KnownFiles=HIDGameDevice.KnownFiles
DriverVer=06/08/2000
[HIDGameDevice.Copy]
joyhid.vxd,,,32
[HIDGameDevice.KnownFiles]
joyhid.vxd=safe
[HIDGameDevice.AddReg]
HKR,,DevLoader,,\"*ntkern,mmdevldr.vxd\"
HKR,,NTMPDriver,,\"joyhid.vxd\"
HKR,,Driver,,vjoyd.vxd
HKR,Drivers\\joystick\\msjstick.drv,Driver,,msjstick.drv
HKR,Drivers,SubClasses,,\"joystick\"
HKR,Drivers,MIGRATED,,0
HKR,Drivers\\joystick,,,
HKR,Drivers\\joystick\\msjstick.drv,Description,,%HID_DEVICE_SYSTEM_GAME%
[Strings]
StdMfgName=\"(Standard game device)\"
Microsoft=\"Microsoft\"
ThrustMaster=\"ThrustMaster\"
*PNPB02F.DeviceDesc=\"Gameport Joystick\"
ThrustMaster.DeviceDesc=\"ThrustMaster ACM Game Card\"
MediaClassName=\"Sound, video and game controllers\"
HID_DEVICE_SYSTEM_GAME=\"HID-compliant game controller\"

Posted: Tue Jan 22, 2008 10:44 am
by d3jake
If you're using 32 bit the drivers DO work correctly when I have my 3d Pro connected to a game port, and using the default \"Microsoft Sidwinder (Auto-Detect)\" Driver, it works like a champ, no issues. I use an old PCI Sound blaster card for my game port, which is running on default XP drivers too. I'd check to make sure that your gameport is working correctly.

Posted: Tue Jan 22, 2008 10:49 am
by Strife
The gameport works fine. This is an issue that alot of people have had. It will either show up as connected and be extremely intermittent... or will just not show up at all as being connected. I will remove the stick and add it... again will come up as not connected. I will add a thrustmaster and it will come up as connected fine... delete the thrustmaster and auto add the sidewinder and it will come up connected(sometimes) I can get into the game... where it will work when it wants to. Cut it and out the whole time.

Posted: Tue Jan 22, 2008 1:50 pm
by Grendel
There is a strictly timed sequence to switch the 3DP into digital overdrive mode. In the 3DP driver for XP this sequence is broken on fast computers (by the way the XP driver measures time). Since the XP 3DPro driver is not officially supported by MS it never got fixed.

Using the 3DP in analog mode (Thrustmaster or CH emulation) usually works fine, you loose functionality tho (bye bye 8-way hat..) Messing w/ the INF files will not help.

This whole issue is the reason why I designed the 3DP-Vert in the 1st place.. I still plan to have more PCBs made BTW.

Posted: Tue Jan 22, 2008 2:11 pm
by Foil
Grendel wrote:In the 3DP driver for XP this sequence is broken on fast computers (by the way the XP driver measures time).
Hmm. Those drivers used to work fine on my 2.8GHz P4 (gameport on a cheap soundcard).

Posted: Tue Jan 22, 2008 5:02 pm
by Grendel
FSB speed is the problem. I had it working on 2.8 P4's after the NB/SB reached operating temp as well. Dedicated gameports on SB PCI cards are more likely to work for unknown reasons.

The sequence to switch the 3DP into digital overdrive is: trigger, 140us delay, trigger, 140+725us delay, trigger, 140+300us delay, trigger. Trigger means: trigger the 555 gameport timer and wait until it's expired (takes about 1.2ms, depending on the capacitor used). As soon this sequence is interrupted by IRQ or DMA requests it will fail and the stick will show "not connected".

For the curious:
MS wrote: The SideWinder 3D Pro includes a minidriver to DirectInputâ„¢. To find out if a SideWinder 3D Pro is installed, you don't have to interpret the Registry settings; all you need to do is enumerate the currently selected joystick devices. The following console-application code fragment lists the OEM product name for all 16 joysticks:
[..]
Polling a typical joystick can take anywhere from 1.2 to nearly 8 milliseconds (ms). That's way too slow for most game developers: they'd rather use that precious time for graphics rendering and play action.

Because the SideWinder 3D Pro uses digital overdrive technology, you can use a single poll call to get information about all four axes, eight buttons, and the status of the eight-way hat switch in an average of 800 microseconds! This makes it unnecessary to poll each button and axis separately.

Posted: Wed Jan 23, 2008 2:33 am
by fliptw
does anyone with linux have these issues with the 3dp?

I wouldn't be surprised if the xp 3dp driver used number of cycles instead of a fixed amount of time.

Posted: Wed Jan 23, 2008 11:43 am
by Strife
Well that answers my questions more than I ever expected. Thanks Grendel :) And when you do find the time for that batch put me right at the top of that list. Its killing me not being able to play right now :(

Re:

Posted: Wed Jan 23, 2008 3:15 pm
by Aus-RED-5
Strife wrote:Well that answers my questions more than I ever expected. Thanks Grendel :) And when you do find the time for that batch put me right at the top of that list. Its killing me not being able to play right now :(
Top of the list huh?
There are others who are on this list still waiting.
Me being one of them. ;)

Back of the line for you my friend! :P

Re:

Posted: Wed Jan 23, 2008 4:17 pm
by Grendel
fliptw wrote:does anyone with linux have these issues with the 3dp?

I wouldn't be surprised if the xp 3dp driver used number of cycles instead of a fixed amount of time.
Hehe -- I used the linux driver to reverse engineer the overdrive protocol, incl. the timed sequence (sidewinder.c by Vojtech Pavlic, he's credited in the 3DP-Vert manual.)

Re:

Posted: Sat May 17, 2008 9:47 am
by raekwonchef
Grendel wrote:FSB speed is the problem. I had it working on 2.8 P4's after the NB/SB reached operating temp as well. Dedicated gameports on SB PCI cards are more likely to work for unknown reasons.
I have a P4 2.8GHz on an Asrock motherboard with 800MHz FSB and am running Windows XP SP3. I recently pulled my old Sidewinder 3D Pro out of the closet to play some D3. I hooked it up to the gameport on my SB Live! 5.1 and while the hardware detection ran, the joystick showed up as "not connected" (as seen countless times in other postings). I forgot that my motherboard has a built in gameport, so I disabled the SB Live!'s and enabled the mobo's port in the bios. I hooked up my 3D Pro, added the auto detect option in game controllers in XP and viola! The joystick is working like a charm! I just got done with my first Descent 3 game in a couple years! YAY!

With that being said, it seems to me that the specific gameport in use might be the issue here. My specs are higher than what people have stated is the limit before expiernecing the FSB problem, but I got it to work like a charm? Any ideas? :?

Posted: Sat May 17, 2008 10:25 am
by akula65
As Grendel has mentioned in this thread and other threads, the value (and quality) of the capacitors in the gameport circuitry does have a bearing on the timing, so that fact can account for the ability of some select faster machines to work with the 3DP in particular circumstances. However, the fundamental issue IS the fact that Microsoft made the unfortunate choice to use software timing loops rather than rely on a real-time or system clock in both the Win9x and WinXP drivers.

Your experience shows that it would be wise for someone who has access to multiple gameports to test them all since the circuitry (and therefore latency) is likely to be somewhat different from one sound card or onboard gameport to another.