An I/O controller for virtual pinball machines: accelerometer nudge sensing, analog plunger input, button input encoding, LedWiz compatible output controls, and more.

Dependencies:   mbed FastIO FastPWM USBDevice

Fork of Pinscape_Controller by Mike R

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Updates.h Source File


00001 // UPDATES
00002 //
00003 // This is a record of new features and changes in recent versions.
00004 //
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 //