After profiling UI filtering and startup I determined that
getCleanMameName was responsible for the incredibly long load times when
loading/filtering Mame ROMS. This function was using a linear search
over a pre-sorted array to find a corresponding Mame ROM Name from the
ROM name. It now uses a binary search which improves UI load/filter
responsiveness by a couple orders of magnitude.
Single core performance on my i7 for 10,000 iterations was 2.01 secs vs
7.77e-4 secs
Ensure that deinit() removes the current sInstance so that the next call
to AudioManager::getInstance() will re-initialize audio correctly.
Remove explicit calls to AudioManager::init() and instead rely on
Sound::play() to initialize audio when needed.
- Refactoring System Environment data
- Added Virtual System Manager class
- Added "all", "favorites" and "last played" systems
- Added GuiInfoPopup class for notifications
- Added Favorites to metadata, as well as a shortcut to toggle favorites
- Added warning if enabling systems but themes don't support it
- Added "filter by favorites" per system
- Adjusted "Go to Random Game" behavior to account for the fact that we now have an "All Games" system
- Added "sort by system name" for the collections