TODO for Gens/GS r7:
- hq3x: Broken on Win32 in some cases. (Check width division!)
- Add --boot-cd command line option.
- Don't show "Zip File Selection Dialog" if a ROM is opened in Full Screen.
- Don't show "Zip File Selection Dialog" if an archive has multiple files
  but only one has a ROM file extension.
- Add --boot-cd command line option.
- Re-add v5 32X savestate load support.
- [GTK+] Update all windows to support gtk_dialog_set_alternative_button_order().
  "gtk-alternative-button-order=1" in ~/.gtkrc-2.0-kde4
- cc_window.c: Add checkboxes to the "Input Devices" listbox for filtering.

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).

Other TODO for Gens/GS r7:
- [GTK+] Consider setting the event box's background color to match the border color.
- [Win32] Disable the "Apply" button until a setting is changed.
- [GTK+] Show directory name in the directory select box.
- [Win32] Show directory name in the directory select box.
- Investigate Gens Rerecording commits r250, r252.

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

MDP TODO for Gens/GS r7+:
- 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.

Gens/GS r8 TODO:
- libcdio
- mdZ80 C port
- ZOMG
- Reimplement the language system.
- Figure out how to do .section .rodata in a way that works on all platforms.
  - .section .data / .section .text works on Win32 and Linux, but not MacOS X.
- 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.
- Rework the language system.
- 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 Linux physical CD-ROM support to libcdio. libcdio also works on
  MacOS X and BSD.
- 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] Show a warning if DDraw fails due to lack of video memory.
- [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.
