@giventofly I use windows version of emulationstation, and i had a lot of bugs and issues with mame libretro cores so I use a normal version of mame (not libretro version) that matches all my romset, but it's a headhache because you need to specify a lot of path to get it working like expected.
This is my es_systems.cfg:
<system>
<name>mame</name>
<fullname>MAME</fullname>
<path>~.emulationstation\roms\mame</path>
<extension>.7z</extension>
<command>%HOME%.emulationstation\systems\mame\mameui.exe -inipath %HOME%.emulationstation\systems\mame -cfg_directory %HOME%.emulationstation\systems\mame\cfg -nvram_directory %HOME%.emulationstation\systems\mame\nvram -input_directory %HOME%.emulationstation\systems\mame\inp -artpath %HOME%.emulationstation\systems\mame\artwork -state_directory %HOME%.emulationstation\systems\mame\sta -samplepath %HOME%.emulationstation\systems\mame\samples -rompath %HOME%.emulationstation\roms\mame "%ROM_RAW%" -waitvsync -triplebuffer -multithreading -throttle -filter -effect triad6</command>
<platform>arcade</platform>
<theme>mame</theme>
</system>
The bios files must be inside the roms folder, so I use the bios files in zip format and roms in 7z format, as you can see on my system config I only use 7z for roms so that way the bios files are hidden on gamelist and I only see the roms.
I hope this helps somebody. Regards.