cpu_asm.c: Optimise the scan_block macro.
GCW Zero: Add exiting when X and Y are both pressed. This is temporary and will disappear when a menu is available.
memory.c: Reduce code duplication via macros, dramatically reducing the compiled size of the executable. On the GCW Zero and DSTwo this is 228 KiB.
DSTwo Makefile: Correctly strip symbols before making the plugin.
sha1.c: Include code for hash message authentication codes (HMAC) only if SHA1_USE_HMAC is defined.
GCW Zero: Preliminary fast-forward up to 600% real-time using the Analog Right direction.
GCW Zero: Allow the screen to be scaled or unscaled using Analog Fully Up and Analog Fully Down respectively.
sound.c: Work around desynchronisation between Direct Sound channels and PSG channels while keeping the saved state version at 1.0f. Loading a saved state made while the desynchronisation was less than 186 milliseconds will also fix it. If the desynchronisation was already longer than that, then it may fix itself within an hour of play.
GCW Zero: Dampen sound while fast-forwarding to avoid loud pops.
GCW Zero: Optimise the case where no scaling occurs.

Formerly, it would take 7-9% more CPU time than using pcercuei's scaler. Now it takes 1-3% less CPU time than with the scaler.
Fix a loud sound pop introduced in commit f098a58ca3ae27d39932fd5cc2b7f6c677ee8cba caused by rewinding the Direct Sound write offset.

This will fix the sound in games that use Direct Sound, as well as, with commit f098a58ca3ae27d39932fd5cc2b7f6c677ee8cba, the synchronisation in at least the following games:
* Bomberman Story, Japan, and Bomberman Tournament, USA;
* Castlevania games;
* Donkey Kong Country games;
* Dr. Mario & Panel de Pon, Japan;
* Earthworm Jim games;
* Final Fantasy games;
* Golden Sun games;
* Kurukuru Kururin;
* Mario Golf: Advance Tour;
* Mario Kart: Super Circuit;
* Mario Tennis: Power Tour;
* Mega Man Battle Network games, US/Europe, and Rockman.EXE games, Japan;
* Pokémon games, US/Europe, and Pocket Monsters games, Japan;
* Puyo Pop, US, Puyo Pop Fever, Europe, and Puyo Puyo Fever, Japan;
* Sonic Advance games;
* Super Mario Advance games;
* Yu-Gi-Oh! games.
GCW Zero: #ifdef SOUND_TO_FILE, write ~/.gpsp/trace.wav containing the audio rendered to the hardware.
DSTwo, GCW Zero: Raise volume to << 4 again. The problem in Metroid Fusion was not clipping; it was what commit f098a58ca3ae27d39932fd5cc2b7f6c677ee8cba fixed.

This reverts commit 08ef2adb4b0f1204c7607b4ca3122215949872e1.
DSTwo: Release version 1.45.
video.c: Use ReGBA_IsRenderingNextFrame in update_scanline, cancelling the drawing if the next frame is not being rendered.

DSTwo, GCW Zero: Define ReGBA_IsRenderingNextFrame. On the GCW Zero, this optimises fast-forwarding because skipped frames are not rendered anymore.

sound.c: Define ReGBA_DiscardAudioSamples, which efficiently discards samples from the core's audio buffer.

GCW Zero: Downsample audio from 88200 Hz to 44100 Hz. Formerly, the SDL audio thread took 7-11% CPU. I expected it to take 4-6% CPU at 44100 Hz, but it takes less than a tenth a percent; 'htop' doesn't see usage from it ever.
sound.c: Signedness adjustment.
GCW Zero: Remove SOUND_TO_FILE.
GCW Zero, gcwsound.c: Remove code duplication.
GCW Zero: Call ReGBA_Menu when Start+Select is pressed.
GCW Zero: Add PNG border support. Bundle a ReGBA Advanced SP border made by hi-ban. The user can also override this border by placing a file called `border.png` in `$HOME/.gpsp`.