Decide whether SuperFX and SA-1 chips are enabled only once per frame. This saves a few million instructions per second. (Inspired by Snes9x-Euphoria)
Reverse the loop in MixStereo such that instead of "for each channel, for each playback sample, add into the mix buffer", the playback sample is instead written to the mix buffer only when fully mixed from the 8 SNES sound channels.

Verified working with Secret of Mana, Super Bomberman 5 and Super Mario World.
Fix Tools/Global hotkeys/* refusing to work by touch.
Fix uninitialised memory access in pitch modulation.
Release 1.24.
8 is NUM_CHANNELS. (magic constant)
Turn off the lower screen's backlight when returning from suspend during emulation.
Suspend on lid-close in the menu.
Reimplement Quicksort correctly for file selection screens. Before this commit, the emulator could sometimes give a file out of its order, for example an O* file between two S* files.
Assign a filter-related variable right after other filter-related variables.
Prevent a file descriptor becoming unusable if the emulator configuration file is not in the correct format.
memcpy vs memmove: memmove correctly handles overlapping source and destination memory buffers, but is slower than memcpy in many implementations. When memory buffers don't overlap, memcpy may be more efficient.

The DS2 SDK is such an implementation, so change many memmoves into memcpys.
When starting CATSFC, assume the backlights are both on, so don't delay 100 milliseconds and set both backlights to on.
Don't initialise the ROM memory at startup, since a ROM needs to be loaded into it anyway. According to BassAceGold's timings, this should save 179 milliseconds.
Hook fast-forward into Settings.TurboSkipFrames.
Make the audio timing more precise.

* Fake out the buffer timing by sending a buffer full of silence when returning from pause. Reduces crackling introduced by the next point.
* Send buffers only once every 23.22 milliseconds, not up to four buffers at once (92.88 milliseconds) and randomly thereafter. Reduces note-length jumpiness.
* Audio may have trouble catching up if external jitter reaches 11.61 milliseconds. That happens if Mode 7 images or filtered modes take a long time to render, or if chips take a long time to execute.
While killing time between frames, process audio instead of doing nothing. Also correctly fill the buffer with silence when returning from pause. This reduces or eliminates crackling.

The emulator kills time in two circumstances:
* In automatic frameskip mode, without fast forwarding, the emulator kills time if it rendered a frame early.
* In manual frameskip mode, without fast forwarding, the emulator kills time to wait for the next rendered frame.
Revert the reversed stereo mixing loop. This makes it more consistent with mainline Snes9x, in case of merges from 1.53. It also didn't help much, given that the problem was trying to push 92 milliseconds of audio inside 20 milliseconds of time.

This reverts commit 2b715684087675747df7cb8995695936f20c782b.
Add an option that controls which element should be more fluid, per game: video or audio.

This makes most games playable, but the player can choose to get fluid audio instead of fluid video in sound-test modes or games with epic soundtracks.
Release 1.25.