<# .SYNOPSIS Undo Playnite damage from setup-playnite-pc-hack.ps1 LiteDB writes. Fixes: 1. Removes broken GameScannerConfig (null emulator, scoop\apps) from scanners.db 2. Clears active library filter that restricts view to RomM only 3. Disables pc_windows RomM mapping until emulator is recreated in Playnite UI Playnite must be fully closed before running. #> $ErrorActionPreference = 'Stop' if (Get-Process -Name 'Playnite*' -ErrorAction SilentlyContinue) { throw 'Close Playnite completely, then re-run.' } $playniteConfig = Join-Path $env:LOCALAPPDATA 'Playnite\config.json' $scannersDb = Join-Path $env:LOCALAPPDATA 'Playnite\library\scanners.db' $rommConfig = Join-Path $env:LOCALAPPDATA 'Playnite\ExtensionsData\9700aa21-447d-41b4-a989-acd38f407d9f\config.json' $liteDbDll = Join-Path $env:LOCALAPPDATA 'Playnite\LiteDB.dll' $orphanEmuId = 'fa12bc5e-dbb9-4d21-b1e6-a67c2fa6a513' $nullEmuId = '00000000-0000-0000-0000-000000000000' # --- 1. Remove broken emulator scanner --- Add-Type -Path $liteDbDll $db = [LiteDB.LiteDatabase]::new("Filename=$scannersDb") $col = $db.GetCollection('GameScannerConfig') $removed = 0 foreach ($doc in @($col.FindAll())) { $emuId = if ($doc['EmulatorId'].IsGuid) { $doc['EmulatorId'].AsGuid.ToString() } else { $doc['EmulatorId'].AsString } $dir = if ($doc.ContainsKey('Directory')) { $doc['Directory'].AsString } else { '' } if ($emuId -eq $nullEmuId -or $dir -like '*\scoop\apps') { $col.Delete($doc['_id']) | Out-Null $removed++ Write-Host "Removed broken scanner: Directory=$dir EmulatorId=$emuId" } } $db.Dispose() if ($removed -eq 0) { Write-Host 'No broken GameScannerConfig entries found.' } # --- 2. Clear RomM-only library filter --- $cfg = Get-Content -Raw $playniteConfig | ConvertFrom-Json if ($cfg.FilterSettings.Library -and $cfg.FilterSettings.Library.Ids -and $cfg.FilterSettings.Library.Ids.Count -gt 0) { $ids = @($cfg.FilterSettings.Library.Ids) Write-Host "Clearing library filter (was: $($ids -join ', '))" $cfg.FilterSettings.Library.Ids = @() } $cfg | ConvertTo-Json -Depth 20 | Set-Content -Encoding UTF8 $playniteConfig Write-Host 'Playnite config: library filter cleared.' # --- 3. Disable orphan pc_windows RomM mapping --- $romm = Get-Content -Raw $rommConfig | ConvertFrom-Json $pc = $romm.Mappings | Where-Object { $_.PlatformId -eq 'pc_windows' } | Select-Object -First 1 if ($pc) { if ($pc.EmulatorId -eq $orphanEmuId) { $pc.Enabled = $false Write-Host "Disabled pc_windows RomM mapping (orphan emulator $orphanEmuId)." Write-Host 'Re-enable after adding Pokemon PC Hack Launcher in Playnite UI.' } else { Write-Host "pc_windows mapping uses emulator $($pc.EmulatorId) - left enabled." } $romm | ConvertTo-Json -Depth 8 -Compress | Set-Content -Encoding UTF8 $rommConfig } Write-Host "`nDone. Open Playnite - full library should be visible again." Write-Host 'Emulated-game scan errors on startup should be gone.'