Microsoft Force Feedback Pro
Force Feedback Pro
———————————
Microsoft SideWinder Force Feedback Pro Joystick From technology acquired from EXOS, Inc, Microsoft then released a force feedback product called the Force Feedback Pro.
–
Built on the design of the Precision Pro, the Force Feedback Pro differed only in the inclusion of motors for the force feedback effects, and the lack of USB compatibility. (A DIY converter project exists.) Due to the inclusion of the motors, the Force Feedback Pro was significantly larger and heavier than the Precision Pro, making it easy to differentiate between the two.en.wikipedia.org
———————————
Microsoft SideWinder Force Feedback Pro Joystick From technology acquired from EXOS, Inc, Microsoft then released a force feedback product called the Force Feedback Pro.
–
Built on the design of the Precision Pro, the Force Feedback Pro differed only in the inclusion of motors for the force feedback effects, and the lack of USB compatibility. (A DIY converter project exists.) Due to the inclusion of the motors, the Force Feedback Pro was significantly larger and heavier than the Precision Pro, making it easy to differentiate between the two.en.wikipedia.org

If I’m not wrong we are talking about years ~’90.
Just +20 year ago when a huge number of “ports” adapter were present … for every “excuse“.
Fortunately today some vendors (such as Apple) use just 1 port for all :-).

This joystick has Game Port. In the same period the USB port was replacing the serial port, parallel port, game port, PS/2 port …
Game Port was available onboard of Sound Card (as Creative SoundBlaster) with of the principle “if you need more than a buzzer then you are a gamer“.
This is the heaviest joystick I ever seen due to inclusion of two motors in order to provide force feedback effects.

NJ+ Joystick Vs. Nicolò and NJ+ Brain Code
This is the “Nicolò Brain code” when he plays
⌨(nj+ code)
import all.I.can;
import all.I.cannot --force --ignore_errors;
// the fnc call_this will be used later
fnc call_this(Environment env){ A: if ( env.isNoiseTooLow() ) then { I.makeNoise(); GOTO A; }; }
fnc main(DadCommands[] args, Environment env) {
if (args[0]=="home_work") {
coredump(!);
return;
exit; // just in case
Console.say("hum... this line should be not executed");
while(;);
}
args[0]="make"; // Overwrite command that Dad passed me as argument
// DAD
Dad dad = Dad.getInstanceOfDad(); //DAD is Singleton
I.setIgnore(dad,!dad.isAngry());
I.sleep(500); // arg is ms
I.setIgnore(dad, true);
// Things
Things it = null;
Things it2 = null;
ScotchTape tape = null; // Dad explained me to initialize
// Initialize
reset(env.things); // for enumeration
I.setThreadTimeout(call_this(env),500);
I.sigmask(0xFF); // I can't be interrupted
START: // I'm using GOTO since my Dad said me to do not use it.
it = env.things.next(max(env.things.rnd(Dangerous),env.things.rnd(withValue) ) );
if ( it.isSparking() || env.things.remain() == 0)
then {
it.setWorks(true);
tape = new ScotchTape();
}
else { goto START; }
if ( dad.did ) then { I.repeatOn(it,dad.better) }
it2 = env.things.rnd(Dangerous); // ignore if it === it2
if ( !it.isAttachable(it2) ) then { it=tape.scotch(it,it2); } // will work!
while(;) I.play(it);
}
Add Comment