An I/O controller for virtual pinball machines: accelerometer nudge sensing, analog plunger input, button input encoding, LedWiz compatible output controls, and more.
Fork of Pinscape_Controller by
00001 // UPDATES 00002 // 00003 // This is a record of new features and changes in recent versions. 00004 // 00005 00006 // January 2016 00007 // 00008 // Dynamic configuration: all configuration options are now handled dynamically, 00009 // through the Windows config tool. In earlier versions, most configuration options 00010 // were set through compile-time constants, which made it necessary for everyone 00011 // who wanted to customize anything to create a private branched version of the 00012 // source repository, edit the source code, and compile their own binary. This 00013 // was cumbersome, and required way too much technical knowledge to be worth the 00014 // trouble to a lot of people. The goal of the new approach is that everyone can 00015 // use the same standard binary build, and set options from the Windows tool. 00016 // 00017 // TSL1410R and 1412R high-speed scanning: the software now takes advantage 00018 // of the KL25Z's fastest hardware features to scan the optical sensors at much 00019 // higher speed than in the past. The software can now read these sensors at 00020 // full resolution in about 2.5ms, which means a frame rate of about 400 frames 00021 // per second. That's fast enough that we can capture images of the plunger 00022 // moving at full release speed without any significant motion blur, and fast 00023 // enough to capture the position throughout a release motion without any 00024 // aliasing from the bounce-back at the end of the travel. In past versions, 00025 // the frame rate wasn't high enough to avoid either blur or aliasing, so it 00026 // was necessary to use heuristics to guess when a release was happening. The 00027 // heuristics worked pretty well, but at the cost of some slight lag while we 00028 // waited to see what was happening. The new higher rate allows for essentially 00029 // zero lag, as well as more precise position sensing. 00030 // 00031 // Keyboard mappings for buttons: button inputs can now be mapped to keyboard 00032 // keys. Joystick buttons are of course also still supported. Some software on 00033 // the PC side is easier to configure for keyboard input than for joystick 00034 // input, so many users might prefer to map some or all buttons to keys. If 00035 // you map any buttons to keyboard input, the controller device will have 00036 // two entries in the Windows Device Manager list, one as a joystick and 00037 // the other as a keyboard. This is automatic; the keyboard interface will 00038 // appear automatically if you have any keyboard keys mapped, otherwise only 00039 // the joystick interface will appear. 00040 // 00041 // "Pulse" buttons: you can now designate individual button inputs as pulse 00042 // mode buttons. When a button is configured in pulse mode, the software 00043 // translates each ON/OFF or OFF/ON transition in the physical switch to a 00044 // short virtual key press. This is especially designed to make it easier 00045 // to wire a coin door switch, but could be used for other purposes as well. 00046 // For the coin door, the VPinMAME software uses the End key to *toggle* the 00047 // open/closed state of the door in the simulation, but it's much easier 00048 // to wire a physical on/off switch to the door instead. Pulse mode bridges 00049 // this gap by translating the on/off switch state to key presses. When 00050 // you open the door, the switch will go from OFF to ON, so the controller 00051 // will send one short key press, causing VPinMAME to toggle the simulated 00052 // door to OPEN. When you close the door, the switch will go from ON to 00053 // OFF, which will make the controller send another short key press, which 00054 // in turn will make VPinMAME toggle the simulated door state to CLOSED. 00055 // There are other ways to solve this problem (VP cab builders have come 00056 // up with various physical devices and electronic timer circuits to deal 00057 // with it), but the software approach implemented here is a lot simpler 00058 // to set up and is very reliable. 00059 // 00060 // Night mode: you can now put the device in "night mode" by configuring a 00061 // physical button input to activate the mode, or by sending a command from 00062 // the PC config tool software. When night mode is activated, outputs that 00063 // you designate as "noisemaker" devices are disabled. You can designate 00064 // any outputs as noisy or not. This feature is designed to let you use your 00065 // virtual pinball machine during quiet hours (e.g., late at night) without 00066 // disturbing housemates or neighbors with noise from flippers, knockers, 00067 // shaker motors, and so on. You can designate outputs individually as 00068 // noisy, so you can still enjoy the rest of your feedback features during 00069 // night play (e.g., flashers and other lighting effects). 00070 // 00071 // Gamma correction: each output can now optionally have gamma correction 00072 // applied. This can be set in the configuration individually for each 00073 // output attached to an LED or lamp. Gamma correction translates the 00074 // computer's idea of linear brightness to the human eye's logarithmic 00075 // brightness curve, which makes make the perceived brightness level of a 00076 // lamp more linear. This can greatly improve the appearance of fading 00077 // effects and the fidelity of color mixing in RGB devices. Without gamma 00078 // correction, fades tend to saturate on the bright end of the scale, and 00079 // mixed colors tend to look washed out. 00080 // 00081 // USB fixes: the low-level USB device code had some serious bugs that only 00082 // very occasionally manifested in past versions, but became much more 00083 // frequently triggered due to other changes in this release (particularly 00084 // the USB keyboard input feature). These should now be fixed, so the USB 00085 // connection should now be very reliable. 00086 //
Generated on Sat Apr 18 2020 19:09:14 by 1.7.2