JosefNemec/Playnite · error · Exception
Can't find built-in {builtIn.BuiltInProfileName} emulator pr
Error message
Can't find built-in {builtIn.BuiltInProfileName} emulator profile. What it means
Thrown by GenericGameController.StartEmulator (the BuiltInEmulatorProfile branch) when Emulation.GetProfile(emulator.BuiltInConfigId, builtIn.BuiltInProfileName) returns null — the named built-in profile is not registered for that emulator's built-in config. Bare Exception with the offending profile name interpolated.
Source
Thrown at source/Playnite/Controllers/GenericGameController.cs:157
{
startupArgs = expandedProfile.Arguments;
if (!action.AdditionalArguments.IsNullOrEmpty())
{
startupArgs += " " + Game.ExpandVariables(action.AdditionalArguments, false, emulator.InstallDir, romPath);
}
}
startupDir = expandedProfile.WorkingDirectory;
startupPath = expandedProfile.Executable;
StartEmulatorProcess(startupPath, startupArgs, startupDir, emulator.InstallDir, romPath, asyncExec, emulator.GetClone(), expandedProfile.GetClone(), expandedProfile.TrackingMode, expandedProfile.TrackingPath);
}
}
else if (currentEmuProfile is BuiltInEmulatorProfile builtIn)
{
var profileDef = Emulation.GetProfile(emulator.BuiltInConfigId, builtIn.BuiltInProfileName);
if (profileDef == null)
{
throw new Exception($"Can't find built-in {builtIn.BuiltInProfileName} emulator profile.");
}
if (profileDef.ScriptStartup)
{
var def = Emulation.GetDefition(emulator.BuiltInConfigId);
if (def == null || !FileSystem.FileExists(Emulation.GetStartupScriptPath(def)))
{
throw new FileNotFoundException(ResourceProvider.GetString(LOC.ErrorEmulatorStartupScriptNotFound));
}
RunStartScriptFile(
$"{emulator.Name} runtime for {Game.Name}",
Emulation.GetStartupScriptPath(def),
emulator.InstallDir,
new Dictionary<string, object>
{
{ "Emulator", emulator.GetClone() },
{ "EmulatorProfile", profileDef.GetClone() },
View on GitHub (pinned to 5911f4e964)
Solutions
- Verify Emulation.GetProfile(id, name) returns non-null before launching (or that the profile is listed).
- Update the game action to a currently-available built-in profile.
- Ensure the emulator add-on supplying the built-in config is enabled and up to date.
- Restart/reload Playnite so built-in definitions are reloaded.
Example fix
// before
currentEmuProfile = builtIn;
controller.StartEmulator(action, asyncExec, args);
// after — confirm the built-in profile exists
if (Emulation.GetProfile(emulator.BuiltInConfigId, builtIn.BuiltInProfileName) == null)
{
dialogs.ShowMessage($"Built-in profile '{builtIn.BuiltInProfileName}' is unavailable. Re-select it.");
return;
}
currentEmuProfile = builtIn;
controller.StartEmulator(action, asyncExec, args); Defensive patterns
Strategy: validation
Validate before calling
if (Emulation.GetProfile(emulator.BuiltInConfigId, builtIn.BuiltInProfileName) == null) throw new InvalidOperationException($"Profile {builtIn.BuiltInProfileName} missing"); Type guard
static bool BuiltInProfileExists(Emulator e, BuiltInEmulatorProfile b) => Emulation.GetProfile(e.BuiltInConfigId, b.BuiltInProfileName) != null;
Try / catch
try { controller.StartEmulator(action, asyncExec, args); }
catch (Exception ex) when (Emulation.GetProfile(emulator.BuiltInConfigId, builtIn.BuiltInProfileName) == null) { dialogs.ShowMessage("Built-in profile unavailable. Re-select it."); } Prevention
- Confirm the built-in profile is still registered before launching.
- Keep the emulator add-on that supplies built-in definitions enabled.
- Re-select profiles after upgrades that rename/remove them.
When it happens
Trigger: A BuiltInEmulatorProfile referencing a profile name that no longer exists in the built-in definitions; BuiltInConfigId changed/removed; profile renamed between Playnite versions; emulator's built-in definitions failed to load.
Common situations: Playnite upgraded and a built-in profile was renamed/removed; emulator add-on providing the built-in config was disabled/uninstalled; stale BuiltInProfileName stored on the action.
Related errors
- Emulator not found.
- Uknown play action configuration.
- Emulator startup script not found.
- Specified emulator config does't exists.
- Backup output path not specified!
AI-assisted analysis of JosefNemec/Playnite@5911f4e964 (2026-08-13).
Data as JSON: /api/errors/b056117f2ea0cb28.
Report an issue: GitHub.