ES-DE 3.5.0 shipped on September 30, 2026, and the official ES-DE frontend site still lists it as the latest version on October 28. That release is the base for this tutorial, which turns a pile of Windows emulators into one controller-friendly game library. The desktop edition comes as a Windows x64 installer and a portable ZIP, and third-party reports describe it as free on desktop.
Here is the plan. You will install the ES-DE frontend, point it at a clean D:\Emulation tree, wire it to RetroArch and five standalone emulators, scrape box art, pick a theme, map a controller, and back the whole thing up. That is 13 steps and about 45 minutes of hands-on time, plus whatever your downloads need. If you are still choosing a launcher, a LaunchBox vs Playnite vs ES-DE price comparison covers the trade-offs, and this guide assumes you already picked ES-DE.
One rule before we start. ES-DE ships with no games, no BIOS files and no emulators. You supply your own legally dumped game backups and console firmware, taken from discs and cartridges you own. Nothing in the steps below needs a download from anywhere else.
Don't miss new tech stories on Google
Add Tech Insider once in the Google app and our stories appear in your news suggestions.
What the ES-DE Frontend Does and What It Leaves to You
ES-DE stands for EmulationStation Desktop Edition, and the name oversells it a little. It is a frontend. It lists your games, draws box art and descriptions, and hands each title to RetroArch or a standalone emulator through a launch command. It never runs a game itself. Hold on to that split, because it turns most setup failures into a two-way question: did ES-DE build the right command, or did the emulator choke on it?
The project’s own user guide frames the whole job in six moves. It tells newcomers to install ES-DE, then “Start the application and press the Create directories button to generate the ROM directory structure”, then add games, install RetroArch, install the required cores, and scrape media. This tutorial follows that skeleton and fills in what the quick start skips, such as standalone emulators, custom find rules and backups.
Version 3.5.0 matters for this setup. A Digital Maus report on the September 30 release says it added support for many new emulators, new theme-engine functionality, TheGamesDB video scraping and Czech translation, plus an experimental option that queries the RetroArch cores you have installed. Treat that core query as a convenience to test, not something to depend on. The project itself labels it experimental.
Packaged routes exist too. EmuDeck and RetroDECK both bundle ES-DE with preconfigured emulators, and a comparison of EmuDeck, ES-DE and RetroDECK by device shows which one suits a handheld and which suits a desktop. On a Windows PC, a hand-built tree gives you control over versions, portable copies and where every save file lives. That control is the reason to take the manual route here.
A note on editions. The Android build is a separate release numbered 3.5.0-65, and according to third-party reports it is sold through different channels than the free desktop build. Skip it for a PC. Everything below targets the Windows x64 desktop edition.
Prerequisites and Versions for an ES-DE Setup on Windows 11
Start with the platform. Windows 11 version 26H2, also called the Windows 11 2026 Update, reached general availability by October 21, 2026, according to Microsoft’s release health pages. Windows 11 24H2 Home and Pro stopped receiving updates on October 13, 2026, so a machine still on that release needs a move to 25H2 or 26H2 before you put it to work. The table lists what to have ready.
| Component | Version to use | Notes |
|---|---|---|
| Windows 11 | 26H2 (or 25H2) | 26H2 reached general availability by Oct. 21, 2026. 24H2 Home and Pro lost updates Oct. 13, 2026. |
| ES-DE | 3.5.0 | Released Sept. 30, 2026. Installer or portable ZIP, both x64. |
| RetroArch | 1.22.2 | Stable build confirmed in current reporting. Older 1.21.0 still appears on some mirrors. |
| Standalone emulators | Latest stable release | PCSX2, DuckStation, Dolphin, PPSSPP and melonDS. Download each from its own project page. |
| Archive tool | 7-Zip or Windows built-in | Several emulators ship as .7z packages. |
| Graphics drivers | Current vendor release | Vulkan and Direct3D 12 support help the newer emulators. |
| Controller | Any Xbox-style gamepad | Works without extra drivers on Windows 11. |
Install the latest cumulative update first. Windows Central reported that the October 13, 2026 security update, which carries builds 26300.9711 for 26H2, 26200.9711 for 25H2 and 26100.9711 for 24H2, fixed Bluetooth reliability and gaming-mouse stuttering. Those are exactly the faults that look like emulator input lag. Nothing in the current reporting suggests that 26H2 needs a different ES-DE setup, so the steps below apply to both supported releases.
Next, the RetroArch version. Current reporting confirms 1.22.2 as the stable build, but the official RetroArch site and its mirrors do not always agree. Some mirrors still advertise 1.21.0, which is older. Download from the official Download page and read the version before you extract anything. A project forum thread also says the next stable release is still in preparation, so nightly builds are for people who enjoy testing, not for a library you want to rely on.
Finally, budget your time. Downloads and the first scrape depend on your connection and library size, so the 45 minutes in the title counts hands-on work only. A scrape of a few hundred games with videos can run for a long stretch in the background. Start it, then do something else.
Steps 1 to 3: Plan the Folders, Download ES-DE, and Extract It
Step 1: Plan one root folder for everything
Decide where everything lives before you download a single file. One root folder on a fast drive keeps paths short, reduces backups to one command, and dodges the permission traps of Program Files and the sync conflicts of OneDrive. This tutorial uses D:\Emulation. Swap in any drive letter you like, but keep it off the desktop and out of synced folders.
D:\Emulation\
Frontend\ (ES-DE portable build and its data folder)
ROMs\ (one subfolder per system: snes, psx, ps2 ...)
BIOS\ (console firmware you dumped yourself)
Emulators\
RetroArch\
PCSX2\
DuckStation\
Dolphin\
PPSSPP\
melonDS\
Saves\ (save files and save states)
Backups\ (optional local copy of Saves and settings)
Short paths matter more than they look. ES-DE passes the full path of every game to the emulator on a command line, and some emulators handle long names or unusual characters badly. Stick to letters, digits and hyphens in folder names, and keep game file names free of exotic symbols.
Step 2: Download the right ES-DE build
Open the official ES-DE site and grab the Windows x64 build. Two packages exist: an installer named ES-DE_3.5.0-x64.exe and a portable ZIP. This tutorial uses the portable ZIP. It keeps the data folder beside the executable, so the frontend, your gamelists and your scraped media travel with the drive if you ever change PCs. Pick the installer instead if you want a Start menu entry and are happy with data in your user profile. Both run the same code.
Confirm the version before you move on. The official page lists 3.5.0 as the latest release, dated September 30, 2026. If your download says anything older, you grabbed a stale mirror. Prefer a different style of launcher? Pegasus frontend setup takes a different approach and is worth a look if ES-DE’s carousel layout does not suit you.
Step 3: Extract it into the Frontend folder
Create the root folders first, then extract. The commands below use PowerShell, which ships with Windows 11. The wildcard in the file name saves you from typing the exact ZIP name, and it fails loudly if it matches nothing.
New-Item -ItemType Directory -Force -Path "D:\Emulation\Frontend","D:\Emulation\ROMs","D:\Emulation\BIOS","D:\Emulation\Saves" | Out-Null
$zip = Get-ChildItem "$env:USERPROFILE\Downloads\ES-DE*Portable*.zip" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Expand-Archive -Path $zip.FullName -DestinationPath "D:\Emulation\Frontend" -Force
Get-ChildItem "D:\Emulation\Frontend" | Select-Object Name
You should see the ES-DE executable and a resources folder. If the files landed one level deeper, inside a folder named after the ZIP, move them up so the executable sits directly in D:\Emulation\Frontend. A tidy path now saves confusion when you write find rules in Step 9.
Steps 4 and 5: First Launch, ROM Folders, and BIOS Files
Step 4: Launch ES-DE and create the directories
Start the executable. On a fresh install ES-DE finds no ROM folder and offers to create one. This is where the Create directories button from the user guide appears. Point it at D:\Emulation\ROMs if the dialog lets you choose a location. If it only offers the default under your user profile, accept it for now, because Step 9 and the advanced tips show how to relocate it.
ES-DE will also ask you to configure your input device. Follow the prompts to map a keyboard or gamepad to the on-screen buttons. An Xbox-style pad needs no extra drivers. You can redo this later from the Input Device Settings menu, so do not agonize over it.
When the dialogs end, you will see an empty screen or a message that no games were found. That is the expected result. ES-DE only shows a system once at least one game file sits in that system’s folder. Open the ROMs folder in Explorer and you should now see dozens of empty subfolders named after systems.
Step 5: Add games and place BIOS files
Copy your own game dumps into the matching system folders. The folder name is the contract. A PlayStation disc image in the wrong folder will simply never appear. The table lists common folders and a sensible emulator choice for each. Folder names follow ES-DE’s system list, so check the user guide for systems that are not shown here.
| ROM folder | System | Suggested emulator |
|---|---|---|
snes | Super Nintendo | RetroArch core (Snes9x or bsnes) |
megadrive | Sega Mega Drive / Genesis | RetroArch core (Genesis Plus GX) |
gba | Game Boy Advance | RetroArch core (mGBA) |
n64 | Nintendo 64 | RetroArch core (Mupen64Plus-Next) |
psx | PlayStation | DuckStation (standalone) |
ps2 | PlayStation 2 | PCSX2 (standalone) |
gc and wii | GameCube and Wii | Dolphin (standalone) |
psp | PlayStation Portable | PPSSPP (standalone) |
nds | Nintendo DS | melonDS (standalone) |
Multi-disc games need one extra trick. ES-DE can treat a folder named like Game Title.m3u as a single game, as long as it holds the disc files and a playlist of the same name. That hides the individual discs and gives you one entry per game. The advanced tips include a PowerShell script that builds those folders for you.
BIOS files do not belong in ES-DE at all. Each emulator keeps its own firmware folder, and RetroArch wants its files in a system directory you set in Step 6. Dump the firmware from consoles you own and keep it under D:\Emulation\BIOS as a master copy. A separate walkthrough on EmuDeck BIOS setup explains how firmware requirements differ by system, and the same logic applies on a hand-built Windows tree.
Steps 6 and 7: Install RetroArch and Choose Your Cores
Step 6: Install RetroArch into the Emulators folder
Download the stable Windows 64-bit package from the official RetroArch Download page and extract it to D:\Emulation\Emulators\RetroArch. The ZIP or 7z package keeps its configuration inside that folder, which is what you want. Launch retroarch.exe once so it writes its default retroarch.cfg, then close it.
Close RetroArch before you edit the config. RetroArch rewrites the file when it exits, and it will happily overwrite your changes if it is still open. Add or change these lines so firmware and saves land in your tidy tree.
system_directory = "D:\Emulation\BIOS"
savefile_directory = "D:\Emulation\Saves\RetroArch\saves"
savestate_directory = "D:\Emulation\Saves\RetroArch\states"
video_fullscreen = "true"
Now open RetroArch again and use the Online Updater menu. Run “Update Core Info Files” first, then open Core Downloader and install the cores from the table in Step 5: Snes9x or bsnes, Genesis Plus GX, mGBA and Mupen64Plus-Next. Core info files tell RetroArch which firmware each core wants, so skipping that update leads to confusing “missing firmware” reports later.
The libretro documentation also lists newer, experimental cores for systems such as the PlayStation 3, PlayStation Vita and Xbox 360, including RPCS3, Vita3K and Xenia Edge. Those wrap standalone emulators and carry stricter hardware needs. According to the Xenia Edge page, the Windows build needs Vulkan 1.1 or Direct3D 12. Stay with the standalone versions for heavy systems unless you have a reason to prefer the core.
Step 7: Test a core outside ES-DE before you blame the frontend
Load one game directly in RetroArch from its own menu. If it boots with sound and video, the core is healthy and any later failure is a launch-command problem inside ES-DE. If it fails here, fix it here. This one test splits every future problem in half, which is the main reason to run it before wiring ES-DE.
Back in ES-DE, each system lists several emulators and marks one as the default. You change the default per system from the Other Settings menu, where alternative emulators appear, and you can override it for a single game from that game’s metadata editor. Use that per-game override for the one title that runs better in a different core, rather than switching the whole system.
For NES and SNES, you may prefer a dedicated standalone emulator over a RetroArch core. A guide to MesenCE setup on Windows walks through one such option, and the same find-rule approach in Step 9 applies to it. Keep your first pass simple, though. Get one RetroArch system and one standalone system working, then expand.
Steps 8 and 9: Install Standalone Emulators and Teach ES-DE Where They Live
Step 8: Install and configure each standalone emulator once
Give every standalone emulator its own subfolder under D:\Emulation\Emulators: PCSX2, DuckStation, Dolphin, PPSSPP and melonDS. Download each from its own project page, extract it there, and run it once by hand. Use portable mode where the emulator offers it, so settings stay inside the folder and a backup captures them.
During that first manual run, finish the emulator’s own setup. Point PCSX2 and DuckStation at the firmware you dumped, choose a graphics backend, and map the controller. ES-DE does none of this for you. It only starts the executable and passes the game path, so an emulator that has never been configured will greet ES-DE’s launch with a setup wizard instead of a game.
Verify each emulator by launching one game from its own window. Keep a short list of the games that worked. When something breaks after wiring ES-DE, you will know whether the emulator, the file, or the launch command is at fault, and you will not waste an evening on the wrong layer.
Step 9: Make the emulators findable
ES-DE locates emulators through a set of find rules. The user guide spells out the simplest Windows route: “In order for ES-DE to find these emulators you need to add their directories to the operating system’s Path environment variable.” That works, and the snippet below adds a folder to your user Path without touching system-wide settings. Run it once per emulator folder.
$add = "D:\Emulation\Emulators\PCSX2"
$user = [Environment]::GetEnvironmentVariable("Path", "User")
if ($user -notlike "*$add*") {
[Environment]::SetEnvironmentVariable("Path", "$user;$add", "User")
}
Restart ES-DE after each change. If it still cannot see the emulator, sign out of Windows and back in, because programs started from Explorer inherit the environment from when Explorer launched. A Path with six or seven emulator folders gets messy, though, and two emulators with the same executable name will collide.
The cleaner route is a custom find-rules file. Create es_find_rules.xml inside the custom_systems folder of ES-DE’s data directory, and list only the emulators you want to override. Entries you define take precedence over the bundled rules, and everything else keeps working as before. Open the bundled file in the install folder under resources\systems\windows first and copy the exact emulator names, because the labels must match.
<?xml version="1.0"?>
<ruleList>
<emulator name="RETROARCH">
<rule type="staticpath">
<entry>D:\Emulation\Emulators\RetroArch\retroarch.exe</entry>
</rule>
</emulator>
<emulator name="PCSX2">
<rule type="staticpath">
<entry>D:\Emulation\Emulators\PCSX2\pcsx2-qt.exe</entry>
</rule>
</emulator>
<emulator name="DOLPHIN">
<rule type="staticpath">
<entry>D:\Emulation\Emulators\Dolphin\Dolphin.exe</entry>
</rule>
</emulator>
</ruleList>
Tools without a bundled rule need the same treatment, and the file format stays identical. A 3DS emulator such as the one in this Panda3DS setup tutorial is the kind of case where you may add your own entry. Restart ES-DE after saving the file. A typo in the XML usually shows up as the emulator not being found, so check the log file when a rule seems to be ignored.
Steps 10 and 11: Scrape Media and Choose a Theme
Step 10: Scrape box art, screenshots and videos
Open the main menu and choose Scraper. Pick a source, choose which systems to scrape, and decide which media types to download. ScreenScraper is the usual first choice for coverage, and a free account raises the limits compared with anonymous use, though free accounts remain throttled. TheGamesDB is the alternative, and 3.5.0 added video scraping for it.
Start small. Scrape one system with a dozen games, then check the results before you launch a big job. Matching depends on file names, so a clean name such as Game Title (USA).chd scrapes far better than a name full of release-group tags. Rename obvious offenders first and your hit rate climbs without any extra effort.
Scraped files land in the data folder, not next to your games. That keeps ROM folders clean and lets you delete media without touching a single game. The table maps the folders you will find inside ES-DE’s data directory. Names can vary slightly between versions, so confirm them on your machine after the first launch.
| Data folder | What it holds | Handle with care |
|---|---|---|
settings | Main settings and input configuration | Edit only while ES-DE is closed. |
gamelists | Per-system metadata, favorites and edited names | Back up before bulk edits. |
downloaded_media | Scraped images and videos | Safe to delete and re-scrape. |
custom_systems | Your find rules and custom system definitions | Back up. This is your hand-written work. |
themes | Extra theme sets you install | Check a theme’s page after major ES-DE updates. |
collections | Custom game collections | Small files, easy to copy. |
logs | The es_log.txt file | First place to look when something fails. |
Step 11: Pick a theme and tidy the system list
Open UI Settings and look for the theme set option. The bundled sets, including Linear and Slate, work out of the box. Because 3.5.0 added new theme-engine functionality, a third-party theme may need an update before it uses the new features, so read the theme’s page before you install it. Try two or three, then stick with one. Swapping themes is free, but each change redraws your whole carousel.
Also trim the clutter. ES-DE hides systems that have no games, so your carousel shows only what you own. Create a Favorites collection for the games you replay, and use custom collections for groupings such as co-op or short games. These are plain files in the collections folder, so they back up and move easily.
Steps 12 and 13: Controllers, Steam Launch, and Backups
Step 12: Map controllers in ES-DE and in every emulator
ES-DE’s input setup only controls the frontend menus. Each emulator keeps its own controller mapping, so a pad that scrolls ES-DE perfectly can still do nothing inside PCSX2. Open each emulator once and bind the pad there. RetroArch applies auto-configuration profiles for common gamepads, but check the hotkeys yourself.
Set an exit hotkey in every emulator. Many people bind Select plus Start to close the running game and fall back to ES-DE. Without it, you will reach for the keyboard to leave a game, which defeats the point of a couch-friendly frontend. Test the combo on each emulator, not just the first one.
Steam can interfere. When Steam is running, its input layer may grab a controller before ES-DE sees it. If the pad vanishes only while Steam is open, either add ES-DE to Steam as a non-Steam game and let Steam Input handle it, or close Steam while you play. Pick one path and stick to it.
Step 13: Launch from Steam or startup, then back everything up
For couch play, add the ES-DE executable to Steam as a non-Steam game and start it from Big Picture. If you want each game as its own library tile instead, a Steam ROM Manager setup imports them in bulk. For a dedicated emulation PC, press the Windows key plus R, type shell:startup, and drop a shortcut to ES-DE in that folder.
Then protect your work. Saves, settings and your hand-written find rules are the only irreplaceable parts of this tree, because games can be re-copied and media can be re-scraped. The command below copies saves and the ES-DE data to a second drive. It uses /E instead of /MIR on purpose. The mirror option deletes files at the destination, and a typo in the path could wipe the wrong folder.
robocopy "D:\Emulation\Saves" "E:\Backups\Emulation\Saves" /E /R:1 /W:1
robocopy "D:\Emulation\Frontend" "E:\Backups\Emulation\Frontend" /E /R:1 /W:1 /XD downloaded_media
The second command skips scraped media because you can rebuild it. Schedule both with Task Scheduler weekly, or run them by hand before any update. That finishes the ES-DE setup in 13 steps. The sections that follow cover what goes wrong, how to fix it, and how to push the setup further.
Seven Common Pitfalls That Break an ES-DE Setup
Most failed setups trace back to a short list of avoidable mistakes. Read these before you blame the software.
- Installing inside Program Files or a synced folder. Windows restricts writes in Program Files, and OneDrive can lock gamelist files mid-save. Keep the tree on a plain local drive.
- Misnamed system folders. A game in a folder ES-DE does not recognize never shows up. Use the names the application created, not your own labels.
- Zipped disc images. Compressed archives work for many cartridge systems, but disc-based systems generally want an uncompressed or CHD image. Extract before you troubleshoot anything else.
- Multi-disc games as loose files. Five discs of one game appear as five entries and break disc swapping. Build an M3U folder instead.
- Editing configs while the program runs. RetroArch and ES-DE both rewrite their settings on exit. Close them first or your edits vanish.
- Downloading from the wrong mirror. Some RetroArch mirrors still advertise 1.21.0 while 1.22.2 is the stable build. Download from the official site and check the version string.
- Skipping the manual emulator run. An emulator that was never configured opens a wizard when ES-DE launches a game. Configure each one by hand first, as in Step 8.
A quick habit prevents most of these. After every change, launch exactly one game from the affected system and confirm it works before you move on. Small, verified steps beat a big untested batch every time.
Troubleshooting: 10 Problems and Fixes
When something fails, check the log first. ES-DE writes es_log.txt into its logs folder, and it usually names the command it tried to run. Then match your symptom below.
- A system does not appear. Check the folder name, confirm at least one file with a supported extension sits inside, and restart ES-DE. Hidden files and unsupported extensions are the usual causes.
- ES-DE says it cannot find the emulator. The find rules do not match your install. Add the folder to Path or write a custom rule, then restart ES-DE. Confirm the executable name in Explorer.
- The game flashes and returns to ES-DE. The emulator probably exited on an error. Launch the same game from the emulator’s own window to read the message. Missing firmware is the top cause.
- RetroArch cannot find a core. Confirm the core file sits in the cores folder beside
retroarch.exe. The bundled rules file has a core section, so copy that block and point it at your cores folder if you moved things. - RetroArch shows a black screen. Change the video driver in
retroarch.cfgto another option such as Vulkan or Direct3D 11 while RetroArch is closed, then try again. - The scraper finds nothing. Check your internet connection, your ScreenScraper login and the game file names. Heavy tagging in names ruins matching, and free accounts hit limits during big runs.
- Media downloaded but does not display. Some themes show only certain media types. Switch theme sets or enable the media type your theme expects in the scraper settings.
- The controller works in ES-DE but not in a game. Each emulator maps input separately. Open the emulator and bind the pad there, and close Steam if its input layer grabs the device.
- Settings keep reverting. You edited a file while the program ran. Close ES-DE or RetroArch, edit, then relaunch.
- Menus stutter while videos play. Turn off video previews in the UI settings, or scrape fewer videos. A busy storage drive also causes this, so keep the data folder on an SSD.
If none of that helps, run ES-DE with its debug option from a terminal and read the extra log lines. The command-line help lists the available switches, and you can print it with --help from the executable’s folder. Include the log excerpt when you ask for help in a community forum, because it saves everyone time.
Advanced Tips for the ES-DE Frontend
Build M3U folders automatically. The script below groups files named like Title (Disc 1).chd by title, moves them into a Title.m3u folder and writes the playlist. Run it on a copy of your library first. It writes plain UTF-8 without a byte order mark, which keeps picky parsers happy.
$dir = "D:\Emulation\ROMs\psx"
Get-ChildItem $dir -Filter "*(Disc *).chd" |
Group-Object { $_.BaseName -replace '\s*\(Disc \d+\).*$', '' } |
ForEach-Object {
$title = $_.Name
$folder = Join-Path $dir "$title.m3u"
New-Item -ItemType Directory -Force -Path $folder | Out-Null
$names = $_.Group | Sort-Object Name | ForEach-Object { $_.Name }
$_.Group | ForEach-Object { Move-Item $_.FullName $folder }
[System.IO.File]::WriteAllLines((Join-Path $folder "$title.m3u"), $names)
}
Move the data folder. ES-DE accepts a command-line option that sets a custom home directory, which lets you keep two profiles, such as a family library and a personal one, from a single install. Confirm the exact switch name with --help before you rely on it. Pair it with a shortcut per profile.
Override one game, not a system. Open a game’s metadata editor and pick an alternative emulator for just that title. A single game that stutters in one PlayStation 2 setup can run in a different configuration while the rest of the library stays put.
Add custom systems carefully. You can define your own system in an es_systems.xml file inside the custom systems folder. Copy a matching block from the bundled file and edit it instead of writing from scratch. That keeps the command placeholders correct, and you only change the name, path and extensions.
Reuse the layout on other devices. The folder discipline in this guide transfers. If you also own a Steam Deck, a walkthrough on how to set up RetroDECK shows the same ES-DE interface in a packaged Linux container, and you can reuse your scraped media and naming habits across both machines.
A Complete Working Project: Build and Audit the Whole Tree
Two small scripts turn this ES-DE setup tutorial into something repeatable. The first builds the folder tree, including the system folders from the table in Step 5. The second audits the tree and tells you which emulator executables are missing and how many games sit in each folder. Together with the find-rules file from Step 9 and the RetroArch lines from Step 6, they form the whole project.
# New-EsdeTree.ps1
param([string]$Root = "D:\Emulation")
$folders = @(
"Frontend", "BIOS", "Backups",
"Saves\RetroArch\saves", "Saves\RetroArch\states",
"Emulators\RetroArch", "Emulators\PCSX2", "Emulators\DuckStation",
"Emulators\Dolphin", "Emulators\PPSSPP", "Emulators\melonDS"
)
$systems = @("snes","megadrive","gba","n64","psx","ps2","gc","wii","psp","nds")
foreach ($f in $folders) {
$p = Join-Path $Root $f
New-Item -ItemType Directory -Force -Path $p | Out-Null
Write-Host "ready $p"
}
foreach ($s in $systems) {
$p = Join-Path $Root "ROMs\$s"
New-Item -ItemType Directory -Force -Path $p | Out-Null
}
Write-Host "ROM folders created for $($systems.Count) systems"
Run the audit script whenever you add an emulator or move the tree. It checks fixed executable names for four emulators and a wildcard for DuckStation, since that project’s file name changes between builds. It does not modify anything.
# Test-EsdeSetup.ps1
param([string]$Root = "D:\Emulation")
$emulators = [ordered]@{
"RetroArch" = "Emulators\RetroArch\retroarch.exe"
"PCSX2" = "Emulators\PCSX2\pcsx2-qt.exe"
"Dolphin" = "Emulators\Dolphin\Dolphin.exe"
"PPSSPP" = "Emulators\PPSSPP\PPSSPPWindows64.exe"
"melonDS" = "Emulators\melonDS\melonDS.exe"
}
Write-Host "== Emulators"
foreach ($name in $emulators.Keys) {
$path = Join-Path $Root $emulators[$name]
if (Test-Path $path) { Write-Host ("OK {0,-10} {1}" -f $name, $path) }
else { Write-Host ("MISSING {0,-10} {1}" -f $name, $path) }
}
$duck = Get-ChildItem (Join-Path $Root "Emulators\DuckStation") -Filter "duckstation*.exe" -ErrorAction SilentlyContinue | Select-Object -First 1
if ($duck) { Write-Host ("OK {0,-10} {1}" -f "DuckStation", $duck.FullName) }
else { Write-Host ("MISSING {0,-10} {1}" -f "DuckStation", "no duckstation*.exe found") }
Write-Host "== ROM folders"
Get-ChildItem (Join-Path $Root "ROMs") -Directory | ForEach-Object {
$count = (Get-ChildItem $_.FullName -File -Recurse | Measure-Object).Count
"{0,-12} {1,4} files" -f $_.Name, $count
}
Here is what the audit prints on a sample library with four emulators installed and a handful of test games. Your counts will differ. What matters is the shape of the output: an OK or MISSING verdict per emulator and a file count per folder.
== Emulators
OK RetroArch D:\Emulation\Emulators\RetroArch\retroarch.exe
OK PCSX2 D:\Emulation\Emulators\PCSX2\pcsx2-qt.exe
OK Dolphin D:\Emulation\Emulators\Dolphin\Dolphin.exe
OK PPSSPP D:\Emulation\Emulators\PPSSPP\PPSSPPWindows64.exe
MISSING melonDS D:\Emulation\Emulators\melonDS\melonDS.exe
OK DuckStation D:\Emulation\Emulators\DuckStation\duckstation-qt-x64.exe
== ROM folders
gba 3 files
nds 0 files
psx 2 files
snes 5 files
Read the result like a checklist. MISSING means a find rule will fail for that emulator, so fix the folder or the file name first. A folder at zero files means ES-DE will hide that system, which is normal until you add games. When every line is green and a test game launches from each system, your setup is done. More emulator guides for this kind of build live in the gaming section.
FAQ: ES-DE on Windows
Is the ES-DE frontend free on Windows?
Third-party reports describe the desktop edition, including the Windows build, as free. Check the official site for current terms before you download. The Android build is a separate release and reportedly sold through other channels.
Is ES-DE an emulator?
No. EmulationStation Desktop Edition is a frontend that browses your collection and launches games through RetroArch or standalone emulators. Every game still runs inside the emulator, which is why you configure controllers, firmware and graphics there.
Does ES-DE include games or BIOS files?
No. It ships without games, firmware or emulators. Use backups you dumped from hardware and discs you own, and keep firmware where each emulator expects it.
Should I use the installer or the portable ZIP?
Use the portable ZIP if you want everything in one movable folder, as in this guide. Use the installer if you prefer a Start menu entry and data in your user profile. Both are x64 builds of the same release.
Do I need Windows 11 version 26H2?
No specific requirement has surfaced for 26H2. Microsoft recommends 25H2 or 26H2, and 24H2 Home and Pro stopped receiving updates on October 13, 2026. This guide targets Windows 11, so check the official ES-DE site for requirements before trying an older Windows release.
How do I update ES-DE later?
Back up the data folder first. For the portable build, extract the new release over the application files and keep your data folder. For the installer, run the new installer. Then launch one game per system to confirm nothing broke.
Is there a dedicated-OS alternative to a Windows build?
Yes. If you want a machine that boots straight into emulation, a Batocera vs RetroPie vs Recalbox comparison covers the dedicated options. A Windows tree like this one suits a PC you also use for other work.





