Win xp device driver for 3dpro...

For system help, all hardware / software topics NOTE: use Coders Corner for all coders topics.

Moderators: Krom, Grendel

Post Reply
User avatar
Strife
DBB Ace
DBB Ace
Posts: 144
Joined: Wed Jul 25, 2007 9:45 am
Location: Connecticut

Win xp device driver for 3dpro...

Post 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?
User avatar
Foil
DBB Material Defender
DBB Material Defender
Posts: 4900
Joined: Tue Nov 23, 2004 3:31 pm
Location: Denver, Colorado, USA
Contact:

Post by Foil »

The XP drivers do support the 3DPro if you have it connected via gameport. Those drivers are built-in for XP.
User avatar
Strife
DBB Ace
DBB Ace
Posts: 144
Joined: Wed Jul 25, 2007 9:45 am
Location: Connecticut

Post by Strife »

Those Drivers do NOT support the 3dpro correctly. It will show up as being there... but not connected.
User avatar
Strife
DBB Ace
DBB Ace
Posts: 144
Joined: Wed Jul 25, 2007 9:45 am
Location: Connecticut

Post 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\"
User avatar
d3jake
DBB Admiral
DBB Admiral
Posts: 1075
Joined: Tue Dec 21, 2004 10:08 am
Location: Minnesota, USA

Post 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.
User avatar
Strife
DBB Ace
DBB Ace
Posts: 144
Joined: Wed Jul 25, 2007 9:45 am
Location: Connecticut

Post 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.
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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.
ImageImage
User avatar
Foil
DBB Material Defender
DBB Material Defender
Posts: 4900
Joined: Tue Nov 23, 2004 3:31 pm
Location: Denver, Colorado, USA
Contact:

Post 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).
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Post 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.
User avatar
fliptw
DBB DemiGod
DBB DemiGod
Posts: 6459
Joined: Sat Oct 24, 1998 2:01 am
Location: Calgary Alberta Canada

Post 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.
User avatar
Strife
DBB Ace
DBB Ace
Posts: 144
Joined: Wed Jul 25, 2007 9:45 am
Location: Connecticut

Post 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 :(
User avatar
Aus-RED-5
DBB Friend
DBB Friend
Posts: 1604
Joined: Fri Apr 23, 2004 7:27 am
Location: Adelaide, South Australia
Contact:

Re:

Post 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
User avatar
Grendel
3d Pro Master
3d Pro Master
Posts: 4390
Joined: Mon Oct 28, 2002 3:01 am
Location: Corvallis OR, USA

Re:

Post 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.)
ImageImage
raekwonchef
DBB Ace
DBB Ace
Posts: 31
Joined: Sat May 17, 2008 8:35 am
Location: Detroit

Re:

Post 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? :?
User avatar
akula65
DBB Ace
DBB Ace
Posts: 371
Joined: Mon Sep 20, 2004 6:34 pm
Location: Virginia

Post 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.
Post Reply