Saving the maximised state

because it's useful to save the state
Adding CLI mode to GUI build etc.

Open

Adding option to open a state or movie. (A movie could previously be started but not through open)

When opening a state or movie the ISO is selected by ID rather than last used because that's more accurate

Disable the Play and Start Recording options if no ISO is set instead of showing the BrowseForDirectory dialog because that's less confusing

The BootManager is changed to try the default and last iso if an empty string is provided

If a file isn't found the ISO library is searched because that allow a relative path

Benchmark

Adding option to play a movie as a benchmark by running it without a frame limit and measure the frame rate
Changing the nogui suffix to cli

because it's a more common term
Adding config path argument

because that allow easier benchmark for different settings
Writing file name in file error

because that makes it easier to locate the problem
Adding state version check when loading state

because it should be checked before boot
Aborting boot if state is incompatible

because the purpose of opening the state is to run from the state rather than from the emulated program entry point
Loading log settings for CLI

because that allow disabling logs for CLI
Logging to OutputDebugString when the process is not debugged too

because the message can be read in DebugView which can be more efficient than reading it in the program's log window

Writing OSD messages to LogManager too because that make the message (f.e. about state version)

* permanent (for future reference) rather than temporary
* visible to CLI mode if it occurs before window creation
Adding data to movie

because that allow determining

* type: GC and Wii input order
* frame: synchronisation
Changing the dual thread movie Wii input update frequency

from 200 Hz to `VideoInterface::TargetRefreshRate`

because that allow recording GC and Wii input simultaneously in the same array
Synchronising dual thread movie input with frame drawing instead of a tick interval

because that make recording more deterministic
Disabling _CRTDBG_DELAY_FREE_MEM_DF

because it use much memory
Listing found OpenAL devices

because the knowledge can be useful
Moving thread name function to a class

because that's better organisation
Creating a namespace for memory utilities

because that's better organisation
Adding wait for real Wiimote connection

when

* booting from the emulated program entry point

because

* the hybrid Wiimote connection isn't established automatically if the real Wiimote connection isn't present on boot
Disabling Wiimote connection motor notification

when the motor is disabled

because it makes a noise
Removing reading of the emulated Wiimote state in the real Wiimote mode

because

* the purpose of the emulated Wiimote state in the real Wiimote mode is to store the real Wiimote state rather than synchronise with an emulated Wiimote
Showing the Wiimote extension settings

in the extension dialog when it's created

because

* it's useful when considering settings changes