To-do / Suggestions
-------------------

   This file is just a reference for what I need/want/will add/fix in future releases.
The order of appearance does not matter, and it does not mean that it will be worked on.


- [FUTURE???, MAYBE!!!] Create a setup wizard to configure initial settings in the 1st front-end run
  and perhaps configure "rompath" "samplepath" / "snapshotpath" / "inipath" in mame.ini
  ... this wizard is going to be hard work to implement in Emu Loader! Maybe create an external
  "wizard.exe" to setup minimum emulator settings ?

- [IMPORTANT!] separate "MenuShowImagesClick()" routines into a new function so EL does not need to keep
               calling "Images" main menu every time the user change the image type...... show/hide elements in
               images panel... partially done!!

- [IMPROVE ?] hide systems you don't want to use

- [MAYBE] improve "uMain.ApplyFilters", grouped filters like "Konami", "Capcom", perhaps by making a "record type"
  to store all drivers and sets needed when selecting the group. currently they are manually checked on this
  function. perhaps creating an external file containing the info ?
  ... or putting this info directly into "ini_files\mame_filters.ini" (or start using the "mame_filters.xml" file)

  [IMPROVEMENT ?] see uMain.SelectEasyItem() function... and perhaps adapt it so other screens can use it

- [MAYBE ?] implement drag and drop for folder lists to reposition folders instead of delete/re-add (emulator setup
  screens ROMs list... and maybe others)

- [IMPORTANT] try to fix the thumb 'mouse drag' to apply the small change property (float value)
   TCustomGaugeBar2 component!!!!!!!!!!!!!!!!!!

- Shortcut (F6) is not working for the new main menu button, except for full screen "Shift+F2"... why ?????????
  May 19, 2015: still don't know why.

- function uMain.ELV_ItemPaintText_General() it's not begin used for anything except main games list and machines list side panel!!!
  remove this function call on all EasyListView components, except "uMain.GamesListView" and "uMain.MachinesListSidePanel"

- keep an eye for the Taito Type-X hardware to "MAYBE someday" separate Type-X from Type-X2, etc... (taitotx.c driver)
  if MAME devs separate the bios ROMs into separate bios sets, then it will be possible.

- how MAME's built-in game selector works.
  if gamename.zip set is found, no matter if CHD file or bios or device set is available or not... game is VISIBLE
- games with no game set (Taito GNET), the CHD file is audited SHA-1 checksum. if not good, game is NOT VISIBLE
- Taito GNET, if CHD not found, game NOT VISIBLE




---------------------------------------------------------
Future improvement ? This needs to be done carefully to not break the validation system!!!!

- create an array of device sets to audit games correctly instead of merging all device sets into one big THashedStringList.
  EL's validation sytem has a flaw... different device sets can use the same ROM and a game that should be set as "missing ROMs"
  is set as "available and OK"
  
  -> modify "DeviceSetsZipContents": THashedStringList to a "array of THashedStringList"
  
  -> create a DevicesIndexList: THashedStringList to hold device set names and their position in the array
  
  -> (NOT NEEDED) create a LastDeviceIndex: Integer var to know the index of the last added device into "DevicesIndexList"
  
  -> perhaps go thru all games to be scanned (only useful if scanning two or more games!!!!!) and get the device sets list and
     get .zip contents into the new DeviceSetsZipContents array ???
     - if scanning all games, this might not be necessary or just do this before doing anything else, even when scanning ALL games
     
  -> first, get the device sets count to create the array... important to avoid "SetLength(array, size);" on every new added device set
     into the array. to create the array as fast as possible
     ... only device sets with valid ROMs. if all ROMs are "nodump", they don't need to be added as EL ignores all "nodump" ROMs and
         always sets them available anyway

---------------------------------------------------------  

- vcs multi-slot implementation ??? This is Atari 2600 'console' system, not arcade...
  src/emu/bus/vcs/vcs_slot.c

- what is this SDL OpenGL settings ??? ... from docs\sdl.xt

  -gl_glsl_vid_attr    Enable OpenGL GLSL handling of brightness and contrast.
                       Better RGB game performance.  Default is on.

- update uMain.SearchCHDFolder() function to support WideString Unicode filenames ???
  CHD files might start to use Unicode filenames... I doubt it!

- uMain.FindGameName() function used in uScanAudioSamples, uMAMu_IconsManager, uImagesManager

--------------------------

- Game details... add a "expand list" text with a link color and create a small form to show all software list names and their titles
  ... only if there is more than one software list!!!!
  ... this is only to avoid waste of space. !?

- ???? implement uMain.GetGameTypeString() function... used by GameDetails, ScanGames, View Scan Results...
       most are using "MemGameInfo" vars

- see uCommon.function ProcessExists(const exeFileName: string): Boolean;
  and create a program to keep checking for FireFox32.exe...
  ... for the laptop
     
- update game details screen:
  - [MAYBE ?] use EasyListView to show left panel texts ???
  - show emulator description in form caption ???
  - try to adapt the screen to fit in 640x480 resolution ???

- [MAYBE] Create two functions to set OnMouseEnter and OnMouseLeave for TShadowLabel texts and direct all call to these new
  functions (uMain)
´
- [MAYBE] make EL DPI scale aware ?????? Setting DPI different than 96 mess up with elements in EL... :(
  include a new .manifest file... ?
  
  <dpiAware>true</dpiAware>

  - EasyListView: Select System dialog
    width is 720px but grid Icon size is 78... 78 * systems_count = 624
      720-624 = 96 (this means the DPI ?) if I use DPI scale I might have to increase the EasyListView width to compensate!!!

- [maybe] split "columns_profile.ini" and create "columnssoftlist_profile.ini" for when "machines list side panel" is enabled
          use the same width or separate width for both files ?
