Mirror with some correction

Dependencies:   mbed FastIO FastPWM USBDevice

Committer:
arnoz
Date:
Fri Oct 01 08:19:46 2021 +0000
Revision:
116:7a67265d7c19
Parent:
56:195d891653c6
- Correct information regarding your last merge

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mjr 35:e959ffba78fd 1 // UPDATES
mjr 35:e959ffba78fd 2 //
mjr 35:e959ffba78fd 3 // This is a record of new features and changes in recent versions.
mjr 35:e959ffba78fd 4 //
mjr 35:e959ffba78fd 5
mjr 35:e959ffba78fd 6 // January 2016
mjr 35:e959ffba78fd 7 //
mjr 35:e959ffba78fd 8 // Dynamic configuration: all configuration options are now handled dynamically,
mjr 35:e959ffba78fd 9 // through the Windows config tool. In earlier versions, most configuration options
mjr 35:e959ffba78fd 10 // were set through compile-time constants, which made it necessary for everyone
mjr 35:e959ffba78fd 11 // who wanted to customize anything to create a private branched version of the
mjr 35:e959ffba78fd 12 // source repository, edit the source code, and compile their own binary. This
mjr 35:e959ffba78fd 13 // was cumbersome, and required way too much technical knowledge to be worth the
mjr 35:e959ffba78fd 14 // trouble to a lot of people. The goal of the new approach is that everyone can
mjr 35:e959ffba78fd 15 // use the same standard binary build, and set options from the Windows tool.
mjr 35:e959ffba78fd 16 //
mjr 56:195d891653c6 17 // TSL1410R and 1412R high-speed scanning: the software now takes advantage
mjr 56:195d891653c6 18 // of the KL25Z's fastest hardware features to scan the optical sensors at much
mjr 56:195d891653c6 19 // higher speed than in the past. The software can now read these sensors at
mjr 56:195d891653c6 20 // full resolution in about 2.5ms, which means a frame rate of about 400 frames
mjr 56:195d891653c6 21 // per second. That's fast enough that we can capture images of the plunger
mjr 56:195d891653c6 22 // moving at full release speed without any significant motion blur, and fast
mjr 56:195d891653c6 23 // enough to capture the position throughout a release motion without any
mjr 56:195d891653c6 24 // aliasing from the bounce-back at the end of the travel. In past versions,
mjr 56:195d891653c6 25 // the frame rate wasn't high enough to avoid either blur or aliasing, so it
mjr 56:195d891653c6 26 // was necessary to use heuristics to guess when a release was happening. The
mjr 56:195d891653c6 27 // heuristics worked pretty well, but at the cost of some slight lag while we
mjr 56:195d891653c6 28 // waited to see what was happening. The new higher rate allows for essentially
mjr 56:195d891653c6 29 // zero lag, as well as more precise position sensing.
mjr 35:e959ffba78fd 30 //
mjr 39:b3815a1c3802 31 // Keyboard mappings for buttons: button inputs can now be mapped to keyboard
mjr 39:b3815a1c3802 32 // keys. Joystick buttons are of course also still supported. Some software on
mjr 39:b3815a1c3802 33 // the PC side is easier to configure for keyboard input than for joystick
mjr 39:b3815a1c3802 34 // input, so many users might prefer to map some or all buttons to keys. If
mjr 39:b3815a1c3802 35 // you map any buttons to keyboard input, the controller device will have
mjr 39:b3815a1c3802 36 // two entries in the Windows Device Manager list, one as a joystick and
mjr 39:b3815a1c3802 37 // the other as a keyboard. This is automatic; the keyboard interface will
mjr 39:b3815a1c3802 38 // appear automatically if you have any keyboard keys mapped, otherwise only
mjr 39:b3815a1c3802 39 // the joystick interface will appear.
mjr 39:b3815a1c3802 40 //
mjr 39:b3815a1c3802 41 // "Pulse" buttons: you can now designate individual button inputs as pulse
mjr 39:b3815a1c3802 42 // mode buttons. When a button is configured in pulse mode, the software
mjr 39:b3815a1c3802 43 // translates each ON/OFF or OFF/ON transition in the physical switch to a
mjr 39:b3815a1c3802 44 // short virtual key press. This is especially designed to make it easier
mjr 39:b3815a1c3802 45 // to wire a coin door switch, but could be used for other purposes as well.
mjr 39:b3815a1c3802 46 // For the coin door, the VPinMAME software uses the End key to *toggle* the
mjr 39:b3815a1c3802 47 // open/closed state of the door in the simulation, but it's much easier
mjr 39:b3815a1c3802 48 // to wire a physical on/off switch to the door instead. Pulse mode bridges
mjr 39:b3815a1c3802 49 // this gap by translating the on/off switch state to key presses. When
mjr 39:b3815a1c3802 50 // you open the door, the switch will go from OFF to ON, so the controller
mjr 39:b3815a1c3802 51 // will send one short key press, causing VPinMAME to toggle the simulated
mjr 39:b3815a1c3802 52 // door to OPEN. When you close the door, the switch will go from ON to
mjr 39:b3815a1c3802 53 // OFF, which will make the controller send another short key press, which
mjr 39:b3815a1c3802 54 // in turn will make VPinMAME toggle the simulated door state to CLOSED.
mjr 39:b3815a1c3802 55 // There are other ways to solve this problem (VP cab builders have come
mjr 39:b3815a1c3802 56 // up with various physical devices and electronic timer circuits to deal
mjr 39:b3815a1c3802 57 // with it), but the software approach implemented here is a lot simpler
mjr 39:b3815a1c3802 58 // to set up and is very reliable.
mjr 39:b3815a1c3802 59 //
mjr 39:b3815a1c3802 60 // Night mode: you can now put the device in "night mode" by configuring a
mjr 39:b3815a1c3802 61 // physical button input to activate the mode, or by sending a command from
mjr 39:b3815a1c3802 62 // the PC config tool software. When night mode is activated, outputs that
mjr 39:b3815a1c3802 63 // you designate as "noisemaker" devices are disabled. You can designate
mjr 39:b3815a1c3802 64 // any outputs as noisy or not. This feature is designed to let you use your
mjr 39:b3815a1c3802 65 // virtual pinball machine during quiet hours (e.g., late at night) without
mjr 39:b3815a1c3802 66 // disturbing housemates or neighbors with noise from flippers, knockers,
mjr 39:b3815a1c3802 67 // shaker motors, and so on. You can designate outputs individually as
mjr 39:b3815a1c3802 68 // noisy, so you can still enjoy the rest of your feedback features during
mjr 39:b3815a1c3802 69 // night play (e.g., flashers and other lighting effects).
mjr 39:b3815a1c3802 70 //
mjr 40:cc0d9814522b 71 // Gamma correction: each output can now optionally have gamma correction
mjr 40:cc0d9814522b 72 // applied. This can be set in the configuration individually for each
mjr 40:cc0d9814522b 73 // output attached to an LED or lamp. Gamma correction translates the
mjr 40:cc0d9814522b 74 // computer's idea of linear brightness to the human eye's logarithmic
mjr 40:cc0d9814522b 75 // brightness curve, which makes make the perceived brightness level of a
mjr 40:cc0d9814522b 76 // lamp more linear. This can greatly improve the appearance of fading
mjr 40:cc0d9814522b 77 // effects and the fidelity of color mixing in RGB devices. Without gamma
mjr 40:cc0d9814522b 78 // correction, fades tend to saturate on the bright end of the scale, and
mjr 40:cc0d9814522b 79 // mixed colors tend to look washed out.
mjr 40:cc0d9814522b 80 //
mjr 39:b3815a1c3802 81 // USB fixes: the low-level USB device code had some serious bugs that only
mjr 39:b3815a1c3802 82 // very occasionally manifested in past versions, but became much more
mjr 39:b3815a1c3802 83 // frequently triggered due to other changes in this release (particularly
mjr 39:b3815a1c3802 84 // the USB keyboard input feature). These should now be fixed, so the USB
mjr 39:b3815a1c3802 85 // connection should now be very reliable.
mjr 39:b3815a1c3802 86 //