Altirra v2.70 test 22 [25.08.2015]
changes:
- Input: Because some broken axis mappings have been corrected, hand-edited input maps may need to be fixed up.
features added
- Input: Dead zones and curves are now adjustable for game controllers.
bugs fixed:
- Debugger: Up/down keys now work better in History when navigating search results.
- Debugger: Fixed time wrapping bug in .pokey deferred timer reporting.
- Input: Fixed inconsistent mappings between analog/digital interpretations of axes and between DirectInput and XInput.
- Network: Fixed protocol handling bugs in emulated ARP and DHCP layers.
- Network: Add support for tunneling over the VXLAN protocol.
authors comment:
Well, I sat down to play a bit of Kaboom!, and found that it was basically unplayable with an Xbox 360 controller... so some tweaks to the input code were required. After some work, I still suck at Kaboom!, but the controller input mappings are now straightened out and more tunable.
There is now a menu item Input > Input Setup that brings up a dialog where game controller input can be tuned. The dead zones for the 2D and 1D axes can be set, and more importantly, the dead zones can be set differently for analog input vs. digital input. This is useful because dead zones usually need to be bigger when mapping a stick to 4-way or 8-way D-pad input vs. using it for analog input. For analog mappings, there is now a "stiffness" option that allows a power curve to be applied, which can make fine control easier. For digital mappings, the conversion now uses an octant mapping, which allows a better hit zone for cardinal directions and directly going to diagonals.
There is no help for the dialog yet, so here's a cheat sheet:
The four input windows displayed are: left stick (axes 1-2), left trigger (axis 3), right stick (axes 4-5), right trigger (axis 6).
The black crosshair or line is the raw position.
The small dot is the adjusted position used for analog mappings, e.g. paddles. The analog dead zone is displayed as a gray disc. Adjust this to a reasonably low level that doesn't cause the game control to drift annoyingly when the stick is in the center. You'll notice that the dot is a bit off from the crosshair when the dead zone is non-zero -- this is intentional so that input ramps up smoothly from zero at the edge of the dead zone.
The red arrows are the directions triggered for digital mappings, e.g. joysticks. The digital dead zone (threshold) is the red circle. Adjust this up if the digital input is too sensitive or drifts at center; adjust it down if it is not responsive enough.
A few bugs in the mappings were also corrected -- IIRC, DirectInput had analog mappings upside down from digital mappings for analog sticks, and XInput had the triggers on different axis numbers for digital and analog mappings. This became pretty obvious with the visualization. You may need to adjust your input maps as a result. If you run into problems, let me know the mappings you're having problems with, i.e. Joystick, Up -> Left Stick Up, and whether you're using the XInput (Xbox 360) controller or not.
Other changes in this version:
Debugger: Improved keyboard navigation in the History pane when browsing search results.
DragonCart: Added support for a forwarded incoming UDP/TCP port pair from the host to the emulation network, fixed bugs in DHCP and ARP handling (Contiki IPCONFIG now works), fixed a number of bugs in the TCP stack, and added support for VXLAN tunneling. VXLAN tunneling allows the emulator to connect its internal emulation net to other systems that support the VXLAN protocol, which is essentially Ethernet over UDP. Linux and *BSD systems can connect to the emulation network this way if you futz with their firewall configurations, which allows the emulation to communicate with a real TCP/IP stack, and also allows the emulation network to be monitored with Wireshark.