TODO for Gens/GS r7:
- hq3x: Broken on Win32 in some cases. (Check width division!)
- Don't show "Zip File Selection Dialog" if:
  - A ROM is opened in Full Screen.
  - An archive has multiple files but only one has a ROM file extension.
- cc_window.c: Add checkboxes to the "Input Devices" listbox for filtering.
- Error handling in plugins.
- Decrease PWM volume. Chilly Willy's PWM scaling patch made it too loud.
- Change vdraw_scale to unsigned int?
- [Win32] Trim relative plugin directory names.
- [Win32] Disable the "Apply" button on the "General Options" window if nothing has been changed.
- [GTK+] Consider setting the event box's background color to match the border color.
- Investigate Gens Rerecording commits r250, r252.

MDP TODO for Gens/GS r7:
- Finish MDP documentation.
- Verify mdp_host_t "No (Not NULL)" and "No (NULL)" support in emulator and plugins.
- Implement mdp_host_t->emulator_control(MDP_EMUCTRL_RELOAD_INFO).
- Finish an initial test suite for MDP rendering plugins.

Stuff done in r7:
- 2xsai: Fixed a potential error due to %eax clobbering by the mode555 setting.
  (commit 4bd10d59fd6b043258027c2d9032c1d5a47b6399)

TODO for later:
- [Win32] Improve DirectDraw border color drawing, especially when the window
  is a different aspect ratio than 4:3.
- [Win32] Use DirectDraw 7's built-in color conversion. (See AamirM's sample code.)
- Re-add v5 32X savestate load support.
  - Rewrite all GSX savestate functions to use structs.
- Implement proper TMSS support using the !CartCE register ($A14101, bit 0)
- Force a wakeup after an SDL hotkey is activated. (input_sdl_events.cpp)
- Reimplement "MINIMIZE" for fullscreen.
- Allow disabling SegaCD and 32X in build to make it easier to port to other platforms.
- Allow disabling all emulation code to test the UI on other platforms.

MDP TODO for later:
- Add "Exclusive Mode" so a plugin can gain exclusive control.
  - Disables reset, close ROM, etc.
- Game Genie: Add support for S68K, Z80, MSH2, and SSH2.
- Add "Input Remapping", needed for movie plugins and netplay.
- GL shader renderer infrastructure in MDP. (OpenEmu has an ARB shader-based hq4x renderer.)

Big Features TODO:
- libcdio
- mdZ80 C port
- ZOMG
- Reimplement the language system.
- Fix the interpolated_scanline 16-bit color asm (non-mmx) renderer.

High-Level TODO:
- Move most global variables to global Settings struct
- Port all Gens Rerecording changes
- Add Qt4 UI
- [MDP] Add VGM dumping support
- Add more compression format support
- Improve the Zip File Selection Dialog
- SSG-EG: http://www.spritesmind.net/_GenDev/forum/viewtopic.php?p=5716#5716
- (possibly?) Use Carbon/Cocoa for menus on MacOS.
- Write a utility to convert PNG to a static const unsigned char[].
  - Tentative name: "C Binary Object Builder" (CBOB)

Low Priority:
- Add MacOS X Aqua UI
- Automatic 32X mode switching when a 32X register is written to.
  This is how Kega enables 32X mode.

High-Level TODO:
- Rework border color emulation to be in the MD renderer, not the blitter.
- Reimplement OpenGL projection so it doesn't stretch on widescreen monitors.
  (Make it an option?)
- [Win32] Add OpenGL renderer.
- Combine common portions of the GTK+ and Win32 UIs.
- Combine the two versions of Starscream. (It'll still output two asms, though.)
- [Linux] Add a No GUI mode that runs in a plain SDL window.
- [Linux] Add a configure option to disable the GTK+ interface.
- Port MP3 support to LAME or some other MP3 library.
- Automatically format SegaCD RAM cartridges.
- [SDL] Figure out the minimum SDL version.
- [GTK+] game_genie: If Enter is pressed in a textbox, select "Add Code", not "OK".
- Pausing using Esc while in interlaced mode (Sonic 2 2P) causes the bottom
  half of the screen to screw up.
- [Win32] Windowed VSync might be broken.
- [Win32] Full Screen: Frame counter flickers.
- [Win32] Frameskip doesn't work correctly. (It completely disregards timing.)
- [ASPI] Only initialize when "Boot CD" is selected. (Also, close when SegaCD is closed.)
- Check if mingw32 forces 8-byte alignment for doubles. (ym2612 struct)
- J-Cart: http://spritesmind.net/_GenDev/forum/viewtopic.php?start=15&t=177
- [Linux] Mono sound is broken.

Low-Level TODO:
- Fix Illegal Address bug. Gens doesn't crash, but Kega and the actual
  MD do. (Possible: Make an option to crash on illegal address.)
- CD audio fixes in Gens Rerecording r65, r66, etc.
  - http://code.google.com/p/gens-rerecording/source/detail?r=65
- [MDP] Overclocking! Add an option to overclock the emulated CPUs so Sonic 2 2P doesn't lag.
- Proper support for 448 lines in interlaced mode. (Sonic 2 2P)
- Z80 initialization bug: http://forums.sonicretro.org/index.php?showtopic=11192
- [32X] PWM regressions from the C port, started in m5.1. PWM is broken in
  BC Racer, but BC Racer doesn't work anyway.

Miscellaneous:
- Commit fe2426a72420177fd3e7e4c086a673ec7273a97c fixed performance problems in VMware.
  This commit allows processing messages in GensUI::sleep(), which technically *shouldn't*
  fix the problem in VMware since GensUI::sleep() isn't called when a game is running.
