VOGONS


Reply 40 of 54, by cyberluke

User metadata
Rank Member
Rank
Member

I am not able to make any progress.

I have Proskit Smart SMD Test Tweezer, which can detect component type and then measure its value. There is one blue capacitor. There is written 'COM' on it. The rest I cannot read. This tweezer will read 130 Ohm on this capacitor. Other capacitors do have nF value. Is this the variable capacitor? In one direction I get 130 Ohm, in another direction it beeps (short circuit).

The big axis potentiometer will output 50k Ohm when joystick is turned off and it is not changing - between pin 2 and pin 3 of this potentiometer. When computer is turn on it reads 0.002nF. And I need to measure between pin 1 and pin 2. There is measured the value I set with trimmer 10k Ohm and it does change and scale properly when moving the stick. So I had to move the trimmer to scale it down to 2-14k Ohm. That's the current range and this way it works in both Windows and DOS.

Also you ask about the last state of oscillator before this bug. So we had the Ramp Up signal there and the last state before the bug looks like the ramp is cut - the spike is cut in the middle. In sound engineering we call it low pass filter or brickwall limiter.

Attachments

  • capacitor.jpeg
    Filename
    capacitor.jpeg
    File size
    1.08 MiB
    Views
    751 views
    File license
    Public domain

Reply 42 of 54, by rasz_pl

User metadata
Rank l33t
Rank
l33t
cyberluke wrote on 2022-08-19, 18:26:

I am not able to make any progress.

I lost track of what you are doing couple of posts ago 🙁 you started measuring random things in wrong ways without stopping for a second to diagnose anything.

cyberluke wrote on 2022-08-19, 18:26:

When computer is turn on it reads 0.002nF.

now you are measuring capacitance in powered on circuit 😐

cyberluke wrote on 2022-08-19, 18:26:

And I need to measure between pin 1 and pin 2. There is measured the value I set with trimmer 10k Ohm and it does change and scale properly when moving the stick. So I had to move the trimmer to scale it down to 2-14k Ohm. That's the current range and this way it works in both Windows and DOS.

trimmers you are manipulating are most likely for factory centering, does the joystick center properly now after you manipulated those? or is it permanently leaning?

cyberluke wrote on 2022-08-19, 18:26:

Also you ask about the last state of oscillator before this bug. So we had the Ramp Up signal there and the last state before the bug looks like the ramp is cut - the spike is cut in the middle.

would rather see picture than a description.
We need to see the moment between last proper ramp up (charging cycle then reset to zero) to the time voltage stays constantly hi (gameport measuring subroutine gave up and stopped resetting/discharging capacitor).

cyberluke wrote on 2022-08-19, 18:26:

In sound engineering we call it low pass filter

no we dont, because what you are looking at is signal in time domain, low pass filter works in frequency domain

cyberluke wrote on 2022-08-19, 18:26:

or brickwall limiter.

do you mean the part in the video at @6:22? I dont see any limiting there, only reaching supply voltage.

What exactly is your goal here? So far we established you have a joysticks that gives error when moved in one extreme position. As far as I understand it You manipulated centering trimmer pots in a way making the joystick unable to report that position anymore (its center got moved towards it)?

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 43 of 54, by Jo22

User metadata
Rank l33t++
Rank
l33t++
rasz_pl wrote on 2022-08-20, 02:52:

What exactly is your goal here? So far we established you have a joysticks that gives error when moved in one extreme position. As far as I understand it You manipulated centering trimmer pots in a way making the joystick unable to report that position anymore (its center got moved towards it)?

Hi rasz_pl, firstly, thanks for all your support. You're explaining things very well, I think, better than I possibly could. 🙂👍
Secondly, I'm afraid it's a bit of my fault here that started cyberluke experimenting.

For example, I explained that there are two types of trimmers a) miniature potentiometers b) miniature variable capacitors and that they might be confused these days (variable caps as found in AM radios are outfashioned).
- I thought that information might be useful here, since the time constant is done through both resistors and caps. So a trimmer cap could have been installed somewhere, maybe, or it could be useful, maybe.

And a few posts earlier, I also made the suggestion, that he maybe could add resistors to compensate (to a small extent) for the range issues.

That being said, I lost a bit of the overview here.
Also my apologies for causing a bit of confusion here, it wasn't intended.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 44 of 54, by rasz_pl

User metadata
Rank l33t
Rank
l33t

Im sure its my fault, I tend to confuse people by spewing a ton of information all at once, sometimes some of it even incorrect (had to edit my own wikipedia entry just before making first post in this thread 😜 https://en.wikipedia.org/w/index.php?title=Ga … ldid=1084399047).

lets start from basics. 555 timer, capacitor being reset, then charged by potentiometer (or something emulating potentiometer)

https://cosmodoc.org/topics/joystick-functions/

as illustrated here:
timing-interval-2052x.png

joystick software routine can overflow if it was written for a slow cpu but is executed on a fast one. It will run out of counter capacity before ~1ms 'timing interval' finishes. For example lets imagine 16bit Counter variable working great on 8MHz 8088 (0.075 IPC) counting up to ~2000. Now lets run this on ~50x faster 80MHz CPU (0.3 IPC) and all of a sudden our counter would need 100000 to still works, except it runs out at ~32000 or ~64000.

In ordinary potentiometer based joy this can only happen in the bottom/right positions (longest 'timing interval').

To enable games written in this bad way to function correctly some gameports can manipulate capacity of C1. Smaller C1 means shorter 'timing interval'.
More modern games had calibration loops and would tune delays to accommodate faster cpu. You can also go fancy and program in special timeout - if calibrated loop takes X for centered joystick and you are still calculating after counting to 5 times X then most likely joystick got disconnected.

Of course all of this is assuming simple analog joystick. Digital joysticks can send all sort of crazy signals in order to emulate potentiometers:
>can output analog voltage out of a DAC, pwm modulated signal, or even use real digital potentiometers

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 45 of 54, by cyberluke

User metadata
Rank Member
Rank
Member

Hello,

'In ordinary potentiometer based joy this can only happen in the bottom/right positions (longest 'timing interval').' - Here on this joystick it happens in the top/left positions - on oscilloscope it can be seen as the shortest timing interval. Then the number of samples fall down and connection is lost until you move the stick a little bit lower.

So it seems that all three computers from 200 Mhz to 900 Mhz (66 Mhz FSB and 133 Mhz FSB) have problem with very short timing interval. They behave the same in DOS and Windows.

Currently I did adjust the factory trimmers VR1 and VR2. The range is only half, the ideal center is a little bit off. But it works in Windows calibration and it works in DOS games that have calibration including calibrating center - like Descent - it works there flawlessly. The smaller range includes responsivity. The only use case where this would not work would be games like Simpsons (or perhaps Raptor), which calibrate only top left and bottom right corner. The center would be off there and there are no trimmers outside to fix it. But for that, you would probably connect it to 486DX2-66MHz and readjusted the trimmers inside to original position, so it would not happen (yes a lot of manual work - don't buy this joystick if you have OCD haha).

The long timing interval (bottom right position) is perfectly fine. Number of received samples is not falling down. It has a constant rate across all computers.

Reply 46 of 54, by cyberluke

User metadata
Rank Member
Rank
Member

The last oscilloscope position when bug occurs look like this yellow line. The spike is cut. Looking at the square wave signals, especially Trigger signal, I would think that at this fast rate, joystick might not be fast enough to read the Trigger change and then the latching with open collector won’t happen. Or the trigger signal will come twice during one latch and it gets interrupted.

Attachments

Reply 47 of 54, by cyberluke

User metadata
Rank Member
Rank
Member

So when I adjusted VR1 and VR2, I am basically not fully charging the capacitor and I won’t reach the threshold, where the issue happens. You get half range, but it works.

Reply 48 of 54, by rasz_pl

User metadata
Rank l33t
Rank
l33t
cyberluke wrote on 2022-08-22, 12:11:

So it seems that all three computers from 200 Mhz to 900 Mhz (66 Mhz FSB and 133 Mhz FSB) have problem with very short timing interval. They behave the same in DOS and Windows.

there is nothing problematic in short 'timing interval' for computers or gameports

cyberluke wrote on 2022-08-22, 12:11:

Currently I did adjust the factory trimmers VR1 and VR2. The range is only half, the ideal center is a little bit off. But it works in Windows calibration and it works in DOS games that have calibration including calibrating center - like Descent - it works there flawlessly. The smaller range includes responsivity. The only use case where this would not work would be games like Simpsons (or perhaps Raptor), which calibrate only top left and bottom right corner. The center would be off there and there are no trimmers outside to fix it. But for that, you would probably connect it to 486DX2-66MHz and readjusted the trimmers inside to original position, so it would not happen (yes a lot of manual work - don't buy this joystick if you have OCD haha).

so as I guessed you moved center so far joystick is no longer able to report position that was giving you trouble

>The range is only half
does this mean you reach max reading when moving joystick half way? thats not really optimal

cyberluke wrote on 2022-08-22, 12:16:

The last oscilloscope position when bug occurs look like this yellow line. The spike is cut.

For this to happen hmmm joystick would have to deliberately stop charging the cap because it thinks its done. The only explanation coming to me right now is joystick manufactured so late (past 2000) all the soundcards had very small capacitors (for example 2nf instead of 10nf) and joystick internal timer cuts off charging circuit without monitoring voltage - why would anyone do this when one comparator makes design bulletproof is a mystery? Another less likely option might be not enough power from the gameport?

Edit: one possibility would be potentiometer inside the joystick being broken, so the chip doing the conversion loses signal from the stick and gives up sending its own emulated signal. That would make sense if only one axis generated error, yet you say 'top/left positions', extremely unlikely for both potentiometers to be broken in same way.

So joystick is unable/unwilling to charge cap all the way to threshold voltage (~3.3v), software measuring loop times out and decides something went wrong, like user unplugging joystick.

cyberluke wrote on 2022-08-22, 12:16:

Looking at the square wave signals, especially Trigger signal, I would think that at this fast rate, joystick might not be fast enough to read the Trigger change and then the latching with open collector won’t happen. Or the trigger signal will come twice during one latch and it gets interrupted.

All of that happens inside 555 timer which has Schmitt trigger fast enough up to couple MHz, several orders of magnitude above what gameport could muster.
Trigger signal is linked with mechanism discharging capacitor, you would see triangle wave if it was being triggered second time before concluding measurement.

rising edge turning into flat voltage not reaching 3.3V threshold means joystick gave up sending more voltage.

cyberluke wrote on 2022-08-22, 12:19:

So when I adjusted VR1 and VR2, I am basically not fully charging the capacitor and I won’t reach the threshold, where the issue happens. You get half range, but it works.

As an experiment you can replace measurement capacitors on one of your gameport cards for smaller ones, 1-2nF. Im guessing this will make this joystick work normally.

PS: Never Ever measure resistance and capacitance on a powered circuit! 😀

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 49 of 54, by cyberluke

User metadata
Rank Member
Rank
Member

Yes, what you describe is correct. Remember I have the special ISA gameport card with speed switch and that probably changes the capacitors and that did solve the issue previously, but it was half way solution (only for DOS, not for Windows).

Yes, adjusting VR1 and VR2 makes your range just smaller - simple as that. You not only move away from top left corner, but also cannot reach bottom right corner the same way as before.

I don't think I want to play with replacing capacitors on ISA soundcards. Maybe on some PCI soundcard. But I have the special ISA gameport card for that.

You mention there could be a lack of voltage on gameport. Even I test on multiple machines, I like that idea. What if I would supply my custom voltage from breadboard to the joystick. For safety, I would probably connect only ground pin to computer's gameport (to get less noise).

Yes, I would say it is like 1999-2003 digital joystick for DOS, Windows 95, Windows 98.

Reply 50 of 54, by rasz_pl

User metadata
Rank l33t
Rank
l33t
cyberluke wrote on 2022-08-22, 21:02:

Yes, what you describe is correct. Remember I have the special ISA gameport card with speed switch and that probably changes the capacitors and that did solve the issue previously, but it was half way solution (only for DOS, not for Windows).

Weird. The problem is not in gameport behavior (cant act differently in dox vs win). Software routine reading gameport also cant influence the charging speed. There are no secret registers allowing you to change anything. All you can to is:
- write any value to IO port 0x201, this resets 4 capacitors
- start reading 0x201 in a loop until all 4 lowest bits turn to 1

The only difference here can be in maybe the DOS programs bigger tolerance for timeouts, it can simply skip reads that timeout and keep retrying (might show as slower read speed) whereas Windows doesnt tolerate this BS and reports first bad read as "joystick disconnected, get lost".
If thats the case it means even with tuner VRs its still not masked completely, just happening rarer.

cyberluke wrote on 2022-08-22, 21:02:

You mention there could be a lack of voltage on gameport. Even I test on multiple machines, I like that idea. What if I would supply my custom voltage from breadboard to the joystick.

how about you just measure 5V coming out of gameport instead of risking frying something with external supply? 😀
Start whatever dos program you use to measure joystick, plug XMEGA Minilab to pins 1,8, then 9, set trigger to falling edge lets say 4.9V for starters (in case those events are really quick and wont be seen in normal free running mode) and move joystick top/left. Lower triggering voltage if it keeps catching until you find how low does it drop. Imo this wont find a problem, it would take 3 of your computers having bad tired PSUs dropping 5V all the way to 4.7V or something.
Quicker way of going about it is multimeter with min/max function instead of XMEGA Minilab, will capture bottom 5V voltage drop.

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 51 of 54, by cyberluke

User metadata
Rank Member
Rank
Member

I have acquired Sound Blaster 16 PnP (CT2940) - waiting for delivery - this one should be special in terms of gameport speed as you said.

I have also acquired another Gameport ISA card for Pentium by InterAct - instead of knob or switch they provide some kind of calibration software (including speed calibration) for joystick.

I have also ordered Logic 3 Invader - it is same like Logic 3 Terminator joystick, just without auto calibration and have the trimmers outside, so center position can be adjusted.

Currently I'm fixing FreePIE FFB branch for Logitech G940 force feedback flight stick for Windows XP (source code C++ and C# with DirectX Input fun). So I don't have time to look at the voltage and because it happens on four computers now, I don't believe all would have voltage issue. Some have new power source certified for Pentium 4 Extreme (I build retromachines with good parts).

Reply 52 of 54, by cyberluke

User metadata
Rank Member
Rank
Member

I made some progress:

CT2950 (should be SB 16 Pro PnP) - mine does not contain OPL3 chip, but it really solves the problem! The old 486 or pre-486 joystick works on Pentium 200Mhz MMX in both DOS and Windows

CT2940 (regular SB 16 PnP) - works in DOS, Windows reports Joystick OK, but opening calibration dialog in control panel throws an exception and nothing can be done about it (but for DOS it is ok)

Both have DSP 4.13 and midi hanging bug and no OPL3.

Current winner: CT2950 (Sound Blaster 16 Pro)

Reply 53 of 54, by Jo22

User metadata
Rank l33t++
Rank
l33t++

I'm glad it works for you now! 🙂👍

But thank god I "grew up" with an outdated PAS16 and a SB16 CT1740..
It saved me from a lot of frustration I didn't even know it existed.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 54 of 54, by cyberluke

User metadata
Rank Member
Rank
Member

Yes, but this has another issue: this CT2950 card has midi note hanging bug and does not have OPL3. Haha. So now I have new problem: make Roland SC-55 working or get OPL3 card at least (like AZTech).

I briefly tried CT2950 with ESS1869F in one PC, but there was some conflict in both DOS and WIN. Only ESS was detected, midi play, but sound (wave) did not work and CT2950 not detected. Both cards are PnP. So probably some BIOS conflict. I have forced BIOS to give IRQ5 and IRQ7 always to ISA plus I have PnP enabled. I tried to force DMA1, 3, 5 to ISA as well now.

Unisound and detect and configure PnP soundcards, but it will show only the first card inserted (ESS).

I will try to solve this, otherwise I will have two computers. One for old joysticks and games without good music. Second will be without old joysticks, but for games with good music 😁 ....luckily I have KVM with 8 computers here.

EDIT: I just look at your video channel, nice 😀 I just bought Powerbook G4 and Powermac G3. I made video about Powerbook G4 - it is much newer than your Mac Mini G4, so native OS9 does not work, but I figured out how to put 10.2.7 Jaguar and that one works smooth without rendering issues for games. Yea! Mostly solving issues, not playing games!!! HAha