Your approach is more or less the MESS approach, though MAME/MESS do need to store the state in the emulator because they store so many diverse systems with different requirements (unless you want to start adding scripting language code to the ROM). The bsnes method is more suited to people who want to not only play games but also move the environemnt they play games around. Both approaches have their dvantages and disadvantages (the MAME approach more closely resembles the hardware, while the bsnes approach is easier for end users and hackers to work with).
I personally would not use XML as it is not a general-purpose data store format (despite being general enough to act as one), though I'm not sure how different markup is from data for this very specific case. JSON (a dedicated data format) would probably be a better choice.
In my honest opinon I would rather keep the flat folder of ROM approach for systmes like the Genesis where you only ever have one ROM when fully combined. Sonic & Knuckles is the only exception that I know if (unless Virtua Racing has an internal ROM for the DSP, but apparently that's not the case?). Why? I'm not entirely sure... partially because I ljust prefer things this way, partially to make handling ROM sets easier, partially to make searching ROMs for binary data easier. byuu does have a program which can automatically build a temporary bsnes ROM folder out of a flat ROM and store the etra data elsehwere, which also helps.
Also if you're going to make a manifest file, I'm not sure how far we can go without starting to introduce game-specific hacks (or having them placed in the emulator). The only real issue is Psy-O-Blade, which has a corrupt SRAM header; not sure how to handle that. 3MB games with SRAM would not be an issue (Phantasy Star IV and The Story of Thor would be explicitly specified as using a mapper; HardBall 95 would not).
This post has been edited by Andlabs: 12 December 2012 - 11:03 AM