namespace BizHawk.Emulation.Common
{
///
/// Defines the means by which firmware, bios and other necessary files are provided to a core that needs them
///
public interface ICoreFileProvider
{
///
/// produces a path that contains emulation related DLL and exe files
///
string DllPath();
///
/// produces a path that contains saveram... because libretro cores need it
///
string GetRetroSaveRAMDirectory(GameInfo game);
///
/// produces a path for use as a libretro system path (different for each core)
///
string GetRetroSystemPath(GameInfo game);
///
/// Get a firmware as a byte array
///
/// the core systemID
/// the firmware id
/// if true, result is guaranteed to be valid; else null is possible if not found
/// message to show if fail to get
byte[] GetFirmware(string sysId, string firmwareId, bool required, string msg = null);
byte[] GetFirmwareWithGameInfo(string sysId, string firmwareId, bool required, out GameInfo gi, string msg = null);
}
}