Mirror with some correction
Dependencies: mbed FastIO FastPWM USBDevice
Updates.h@116:7a67265d7c19, 2021-10-01 (annotated)
- 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?
User | Revision | Line number | New 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 | // |