VOGONS


First post, by warstorck

User metadata
Rank Newbie
Rank
Newbie

Hi Akula I hope you are still reading this. I tried out your drivers here: MS SideWinder 3D Pro Win9x Drivers
and got my 3D pro to work on one of my systems on the other one however non of them worked. I even reinstalled the original Sidewinder drivers and ran through all of the divisors again just to be sure. The System is a socket 370 machine with a pentium 3 733/133/256 on a gigabyte GA-6VXC7-4X motherboard, 512mb of pc133 ram and the joystick is plugged in through a opti82c931 ISA soundcard. The joystick does get recognized as a regular 4 button Joystick in dos games.

Reply 1 of 18, by akula65

User metadata
Rank Oldbie
Rank
Oldbie

Short Version: Odds are the ISA sound card is the source of timing issues that prevent recognition of your SideWinder 3D Pro in your problematic system, but it could conceivably be any of or the sum total of all your components.

Really Long Version: The driver package was created specifically for me to use the SideWinder 3D Pro with the Creative Sound Blaster Live! cards that I had in all of my Win98 machines at the time. As I was running tests to adjust the timing within the drivers, I discovered that the only way to get the SB Live! cards to work was to fix two (apparently) unrelated timing issues within the driver. The first problem is the specific timing and control sequence to get the joystick to switch into Digital Mode. The second problem is what appears to be a latency (or delay factor) present in the driver that had to be reduced to zero (no latency) in order to get the joystick to function with the SB Live! card. I can only speculate since I don't have access to the original joystick driver source code, but it is likely that for ISA cards (i.e. pre-SB Live! sound cards), the latency is necessary in order for the driver to work due to the slower ISA bus compared to the PCI bus of the SB Live!. If memory serves, the latency is nulled out for ALL of the drivers in the package, and this is why most (but not all) of the folks who are unable to get the modified drivers to work tend to be those users with ISA sound cards.

If you look at the original manual for the SideWinder 3D Pro, Microsoft enumerated a number of sound and gameport devices that they had apparently tested and found to be incompatible with the SideWinder 3D Pro. This is a sign that ANYTHING that causes a substantial deviation from Microsoft's timing "norms" is likely to cause the SideWinder 3D Pro driver to fail to recognize the joystick and put it into Digital Mode. Since Microsoft chose to use software timing loops in the driver, there are a host of factors that impact timing relative to the driver: CPU speed, FSB speed, particular bus settings for ISA or PCI bus (depending on the sound card), etc. This is why I say that any or all of the components in your problematic system may be contributing to the timing failure of the driver. A few people using SB Live! cards have also indicated that they can't get any of the drivers in the package I created to work. This is a sign that there are cumulative timing issues of the system components that wreak havoc with joystick driver on those particular hardware configurations.

As I mentioned above, the two timing issues that I had to address seem to be independent. This means that I could conceivably create some additional driver packages that retain the varying timing for getting the joystick into Digital Mode (Problem One), but also re-introduce the latency that ISA sound cards seem to need (Problem Two). I don't have a suitable system to test if or how the driver would function with ISA sound cards, so other users would have to the testing. I also don't have the time to do this testing right now even if I did have a suitable system. Basically, this would mean users would have to go through one or more additional sets of potential drivers just as you did with the original set and see if they work.

So the question would be: Are you and/or others willing to go through additional driver sets and see if they work? I would need to set up an Open Watcom environment, adjust and recompile the original programs and then generate some additional driver sets. This might take me a little time, but not nearly as much time as the original effort took ten years ago.

Reply 2 of 18, by SirNickity

User metadata
Rank Oldbie
Rank
Oldbie

I might be able to help with this. I have several PCs and a SideWinder 3D Pro.

386SX25 with SB Pro 2.0, DOS / Win3.1
486DX2/66 with SB16, DOS / Win3.1
P166MMX with SB AWE32, Win95
PII-450 with SB AWE64, Win98 (waiting on parts)
--- and PCI cards ---
PIII-1.0 with SB Live!, WinME
P4-2.4 with SB Audigy, WinXP (waiting on parts)

I also have Open Watcom C++, MS VS 4.0, MS VS 6.0. No experience writing Windows drivers, just a self-taught hacker with some Linux and embedded dev experience.

Reply 4 of 18, by akula65

User metadata
Rank Oldbie
Rank
Oldbie

Then I will post driver sets in this thread, probably without any documentation for the time being, and you guys can post test results here. Once we get a sense of whether they are working, I can append documented sets to the original thread or create a new thread.

We're supposed to get up to two feet of snow this weekend, so I may have some time to work on this.

Reply 5 of 18, by akula65

User metadata
Rank Oldbie
Rank
Oldbie

The first test set of drivers is attached. Anybody who was unable to get the original set of modified drivers to work is welcome to try this batch and report the results. Like the older batch of modified drivers, these are identical in size to the original Microsoft driver and have even fewer adjustments for timing. My suggestion is to start at Divisor_24 and work your way back to Divisor_1 testing only the 0 drivers first, and test the 99 drivers as a last resort. Please report which Divisor values work (if any) and your system specs including what particular sound card you are testing.

Thanks to those who report results.

Attachments

  • Filename
    No_Delay_Adjustment.zip
    File size
    253.16 KiB
    Downloads
    57 downloads
    File comment
    MS SideWinder 3D Pro Driver Set for Testing. No delay adjustments or latency changes.
    File license
    Fair use/fair dealing exception

Reply 7 of 18, by akula65

User metadata
Rank Oldbie
Rank
Oldbie

New batch attached with no latency changes and small increase adjustment to the timing values to put the device into Digital Mode. Same instructions as the previous batch.

Attachments

  • Filename
    140-865-440_Adj.zip
    File size
    253.19 KiB
    Downloads
    59 downloads
    File comment
    MS SideWinder 3D Pro Driver Set for Testing. No latency changes and 140-865-440 timing change.
    File license
    Fair use/fair dealing exception

Reply 8 of 18, by SirNickity

User metadata
Rank Oldbie
Rank
Oldbie

I downloaded both sets and am trying the Adj batch first. I am using my Win98 FE, PII-450 with AWE64 (ISA).

For reference, with retail AWE64 drivers and stock Win98 SideWinder 3D Pro driver, when I add the joystick in the Gaming Options control panel applet, it just freezes for a moment and then lists it as "Not Connected". Adding a normal 4-button, 3-axis joystick works fine. I assume this is the problem we're trying to solve?

What's the ideal procedure for testing these? E.g.:
1) Copy the selected VXD into windows\system folder
2) Restart Windows
3) Add controller and see if it's detected. If not:
4) Delete controller and repeat steps with next version (24 to 0, using 0 drivers first)

Reply 9 of 18, by akula65

User metadata
Rank Oldbie
Rank
Oldbie

SirNickity, here are the instructions from the original batch of modified drivers, and these apply equally well to the driver sets in this thread:

Each of the DIVISOR folders contains two folders labeled "0" and "99", and each of these folders contains one copy of the SW3DPR […]
Show full quote

Each of the DIVISOR folders contains two folders labeled "0" and "99",
and each of these folders contains one copy of the SW3DPRO.VXD driver.
The timing for performance is the same in the "0" and "99" drivers,
but the "99" driver has timeout values in a number of timing loops that
are ten times those in the "0" driver. If both the "0" and "99"
driver work, then the "0" driver should be preferred since the longer
timeout values of the "99" driver can adversely impact system
performance. The "99" versions are provided for high performance
systems where the default timeout values of the "0" drivers may be too
small to permit the driver to operate properly.

Since you will likely have to try a number of the drivers before you
find one (or more) that work, the following is suggested:

1. Unzip the contents of the SW3DP10.ZIP archive into a temporary
folder and keep this window open.
2. Open another window and change it to the \WINDOWS\SYSTEM folder.
3. Open the Control Panel and start the Gaming Options/Game Devices
applet.
4. Arrange the windows so that the applet and the windows from the
first two steps are all visible.

In your first pass through the drivers, ignore the drivers in the "99"
folders and only test the drivers in the "0" folders. If all of the
"0" drivers fail, then and only then, test the "99" drivers.

Do the following in order to find the driver(s) that work:

1. Make sure that no controller drivers are installed in the applet.
Use the Remove button to remove any installed drivers. Note that it
is not necessary to restart the system after removing a driver.
2. Copy a SW3DPRO.VXD driver from the ZIP archive into the
\WINDOWS\SYSTEM folder and overwrite the existing driver. It would
be wise to start with DIVISOR_1 or DIVISOR_24 and work towards the
other end.
3. Click the Add button in the applet, select the Microsoft
SideWinder 3D Pro driver from the list, and click the OK button.
Windows will now attempt to install and start the driver. It may
take several seconds for the status to appear.
4. Record the result (this is important for a number of reasons).
If the driver installs successfully, you will see OK in the Status
column (feel free to do the Dance of Joy at this point). If it fails,
then you will see "Not Connected" in the status column.
5. Assuming you start at one end of the DIVISOR values, don't stop
testing with the first successful driver. Keep testing until the
testing fails again because you may find more than one driver that
works, and the drivers may not work equally well (see below). Go
to step 1 if there are more drivers to test. Make sure to test
the "99" drivers on high performance systems if all of the "0"
drivers fail.

The author has cycled through all 48 drivers in a little over ten
minutes using the above procedure.

So there should not be a need to reboot Windows for each driver, at least not in my experience. Everything else sounds good, and you are correct about the "Not Connected" issue.

Reply 10 of 18, by SirNickity

User metadata
Rank Oldbie
Rank
Oldbie

Oh, that makes things much easier! I would've slogged through it for the greater good, but... 😀

Sorry I missed the existing docs.

Edit: Tried all 48 in the adj pack - no luck. All showed Not Connected. Should I try the No Delay pack?

Reply 11 of 18, by akula65

User metadata
Rank Oldbie
Rank
Oldbie
SirNickity wrote:

Oh, that makes things much easier! I would've slogged through it for the greater good, but... 😀

Sorry I missed the existing docs.

Edit: Tried all 48 in the adj pack - no luck. All showed Not Connected. Should I try the No Delay pack?

Yes, please.

Also, while a driver that just plain works is the ultimate goal, a driver or drivers that seem to waffle between "Not Connected" and "OK" status are also important in this effort since they would be just slightly off in terms of timing, and it would help put us on the right path. Drivers that show "OK" status, but don't work as you would expect are also important to note as well.

Reply 13 of 18, by SirNickity

User metadata
Rank Oldbie
Rank
Oldbie

Just finished the nodelay pack. Nothin doin. "Not connected" all the way.

I have the original driver disk, which I use on my Pentium 166 with Win 95 (since it doesn't have native drivers), and that works fine. I have a few other Pentium CPUs - up to 233. I'm not sure if I would start to see this fail on higher speed Pentium-class machines, or only once jumping up to the PII. I can also try some of these on the PIII 1.0GHz, if maybe the modified loops are too long for 450MHz. The PIII has a PCI Live!, though I think it still has an ISA slot if it would help to stick with the AWE64.

What else can I do to help?

Reply 14 of 18, by akula65

User metadata
Rank Oldbie
Rank
Oldbie

Microsoft characterized the problem with the driver as being an issue with machines that had a 100 MHz or higher FSB. That is overly simplistic, but for our purposes it is probably a good minimum requirement for a testing platform (assuming, of course, that the original Microsoft driver does not work on a particular machine).

Warstorck is using a non-Creative Labs Opti card, so a Creative Labs card or two would be good. Sound Blaster AWE 32 or AWE 64 and an earlier Sound Blaster would be great, but if you only have one Sound Blaster available, that should be sufficient. The more cards we test on, the fewer drivers that will be necessary when I put the final set together (I hope).

The driver set that I released ten years ago had 0% latency. The two driver packages earlier in the thread had 100% latency, just like the original Microsoft diver. The next sets in this post vary the latency from 20-80%, so hopefully, things will get more interesting (i.e., successful). It is possible I may need to also make some additional adjustments to get the drivers to go into Digital Mode initially, but we will worry about that after we see what happens with this batch.

Use the same test procedure as with previous packages. If you would, specify any successes in terms of the file name + the directory path inside the archive, so something like:

No_Delay_Adj_60_Pct.zip\Divisor_22\Latency_27\0 [OK]

You may have success on a particular machine configuration using drivers from more than one archive, so don't stop testing with the first success or the first archive that gives successful results. We need to see which drivers work from ALL the archives in order to determine what driver sets can be excluded from the final package.

Attachments

  • Filename
    No_Delay_Adj_80_Pct.zip
    File size
    253.19 KiB
    Downloads
    45 downloads
    File comment
    No Delay Adjustments and 80 Percent Latency
    File license
    Fair use/fair dealing exception
  • Filename
    No_Delay_Adj_60_Pct.zip
    File size
    253.18 KiB
    Downloads
    43 downloads
    File comment
    No Delay Adjustments and 60 Percent Latency
    File license
    Fair use/fair dealing exception
  • Filename
    No_Delay_Adj_40_Pct.zip
    File size
    253.18 KiB
    Downloads
    46 downloads
    File comment
    No Delay Adjustments and 40 Percent Latency
    File license
    Fair use/fair dealing exception
  • Filename
    No_Delay_Adj_20_Pct.zip
    File size
    253.16 KiB
    Downloads
    62 downloads
    File comment
    No Delay Adjustments and 20 Percent Latency
    File license
    Fair use/fair dealing exception

Reply 16 of 18, by SirNickity

User metadata
Rank Oldbie
Rank
Oldbie

Yeah, no problem. I've got at least one of each major model Sound Blaster cards from the Pro to the Audigy. The P3 has onboard audio, for non-SB testing.

I have a Pro Audio Spectrum 16 as well -- which would have been nice for the purpose of having another non-Creative ISA card to test with -- but unfortunately it's a sick puppy at the moment. I wasn't able to calibrate it on the Win95 Pentium without it randomly floating the analog axes to one side, and triggering the POV hat on button presses. Audio's broken too.

I'll give the new bundles a shot this weekend.

Reply 17 of 18, by dj0nes

User metadata
Rank Newbie
Rank
Newbie

Hey Akula, thanks for your work in building these replacement drivers!

I tried every one of them [0-80] on a 1GHz P3 Win 98 box with a 133MHz FSB via the onboard SoundMAX game port - no dice. Dropping down to the standard 2-button, 2-axis worked configuration worked, so it looks like the port and joystick are functional.

Anything further I can try?

Thanks!