diff --git a/frontend/src/console/views/Play.vue b/frontend/src/console/views/Play.vue index 3c5e5be9ea..667a463fb6 100644 --- a/frontend/src/console/views/Play.vue +++ b/frontend/src/console/views/Play.vue @@ -419,12 +419,20 @@ async function boot() { } // Disc selection persistence - const discId = playerStorage.disc.value + const storedDiscId = playerStorage.disc.value ? parseInt(playerStorage.disc.value) : null; + const validDiscId = + storedDiscId && rom.files.some((f) => f.id === storedDiscId) + ? storedDiscId + : null; + // Clear stale disc selection from localStorage + if (storedDiscId && !validDiscId) { + playerStorage.disc.value = null; + } window.EJS_gameUrl = getDownloadPath({ rom: rom, - fileIDs: discId ? [discId] : [], + fileIDs: validDiscId ? [validDiscId] : [], }); // BIOS selection persistence diff --git a/frontend/src/views/Player/EmulatorJS/Base.vue b/frontend/src/views/Player/EmulatorJS/Base.vue index 39f9a63e7f..b80a56af5a 100644 --- a/frontend/src/views/Player/EmulatorJS/Base.vue +++ b/frontend/src/views/Player/EmulatorJS/Base.vue @@ -217,9 +217,11 @@ onMounted(async () => { } const storedDisc = localStorage.getItem(`player:${rom.value.id}:disc`); - if (storedDisc) { - selectedDisc.value = parseInt(storedDisc); + const storedDiscId = storedDisc ? parseInt(storedDisc) : null; + if (storedDiscId && rom.value.files.some((f) => f.id === storedDiscId)) { + selectedDisc.value = storedDiscId; } else { + if (storedDisc) localStorage.removeItem(`player:${rom.value.id}:disc`); selectedDisc.value = rom.value.files[0]?.id ?? null; }