- Move touch-handling code for "regular" touch joystick into separate file
- Add new touch-handling code for "keypad" touch joystick. This is a somewhat complex state-machine to determine
which key to press depending on a full keypad rosette.
- Adds a callback to vm.c to hook into keyboard read callback. Allows us to immediately queue the next key if the
keypad touch joystick is long-pressed for either axis or button keys.
- Ensures various shutdown codepaths (interface, cpu/audio, main/video, ...) run on proper thread(s)
- Actually now runs the CloseAL() code
- Try to ensure all detached threads exit ... seems to help keep Valgrind happy =)
- 'animation' was too constrained a name to what these do, so switch to the overloaded term 'node' ;-)
- Touch handling is no longer the sole purview of the touchjoy, (in prep for touchable HUD elements)
- menu/HUD creation functions moved to better location and renamed
- CPU change animation now default displays on desktop Linux (exercise common HUD codepaths with mobile)
CPU speed animation touch-ups, and enable building for desktop
Rename/shuffle animation declarations and code
Refactor backend video system to be a dynamically initialized module
Basic CPU speed texture animation works on desktop Linux and Android
Use static pixel buffers to avoid malloc/free churn
Improve CPU animations
First cut at CPU speed message animation
Refactor some of the classic interface functions to be potentially reusable elsewhere
* Removes Linux-specific joystick handling
* Adds cross-platform GLUT joystick handling; Caveats:
- GLUT is not robust to joystick hot plugging like my old Linux-specific code was. (Fix should be made in the
GLUT driver and pushed upstream if we really care)
- Deprecated X11 renderer now can only use keypad joystick
* GLUT sends the raw ascii ctrl-values, so we merely send them along in a "cooked" mode
+ It may be that some strange ctrl combinations (saw CTRL-~ or CTRL-ESC) are not properly handled this way, but
... not sure what can be done about this (doesn't seem to be a way to force glut to send us the non-cooked keys)
* Legacy X11 input continues to be sent as raw values (which arguably is a better way)
* previously this classic interface acted as an oldschool modal dialog (which worked fine with the X11 renderer
where we actively pumped the event loop)
* Useability enhancement for PCs without a keypad or physical joystick/gamepad ;)
* There will be contention in programs that utilize both the joystick and arrow keys for
different things, yet I don't know of any examples of this...
* Use defines instead of magic numbers in a bunch of places
* Remove deprecated ii_keymaps and only use iie_keymaps
* Allow keypad corners for emulated joystick
* Merges input handling into one routine called thru video_sync at refresh rate
* Adds keypad joystick calibration routine
* Simplify joystick calibration routines to use same codepath as main emulator joystick handling
* Deprecate "lazy" color modes
* Allow setting speaker sound volume
* Make Joystick code more generic (future support of touch input)
* Deprecate setting emulator mode (//e is ascendant)
* Condensed reboot code path into reset codepath
* Reset sequence now checks for openapple or closedapple key and routes accordingly
* Pause/Break key is now strictly emulation pause key
* F4 is now unused
* End key is now mapped as //e reset key (easier to hit, and less likely window manager is using it)
* PrintScreen/SysReq key is now unused