Also fixes presets/clear buttons for NTT, Pachinko & Hypershot, and improves layout for all controller config popups (buttons/borders are aligned, etc.)
-The pachinko/subor mouse/ntt/virtual boy controllers could be selected in the UI for 2p/4p adapters, but did not work at all
-Keybindings for the "custom keys" for some controllers were not working when connected to a 2p/4p adapter
-Pachinko controller did not allow the user to configure the keybindings for NES-style buttons
The NES (and AV Famicom) both ignore consecutive reads to 4016/4017 (when the reads on 2 consecutive CPU cycles). This implements that behavior when the corresponding console type is selected.
These changes also simplify the DMA code, because a lot of extra code was in the DMA logic to simulate the same result. Moving this logic to the 4016/4017 reads makes the code simpler and allows it to work properly when a regular instruction reads from 4016/4017 twice in a row, too.
* SNES: Add Turbo File Twin support
* SNES: Try to make write mode flag more accurate
Hardware tests on Turbo File Twin seem to be showing that if you write data then it stops reporting that the write flag is on, despite letting you write more data
* SNES: Move bit array access to a utility
Also add note about how bit 26 in STF report is not fully verified
* SNES: Add behavior seen when reading without read command
When you turn the strobe on and off outside of a read command, the shift register gets reloaded with the most recently read or written byte
* NES, SNES: Emulator::SaveBattery() for saving console and controller
* Fix range limit in SetBitInArray
* Add notes about unknown aspects of TFII mode
* Add comments to make it clear what's unknown
* STF mode ignores out-of-range addresses
Also allocate _data instead of putting it in the class
* Code: Add auto-formatting rules for C++ projects (clang-format) and enforce code style via "clang-format" and "dotnet format"
* fix ui format warnings