It's that time of year when I attempt to build a Retroarch setup.
It's that time of year when I'm shocked at how unhelpful open source projects tend to be.
I'm no stranger to media hoarding and organization. I have a meticulously organized flac library, a painstakingly sorted plex library, and as of today a fairly updated rom collection of dozens of systems. I do this because I like the benefits of having proper tags and album art on my foobar playlist. I want my plex library to be as much about discovery as it is about playback.
One of the first lessons you learn about media management is that you have to play by the rules of the playback system you are using. If your files aren't organized and tagged, no automated system built by man will fix it for you, and any attempts to automate the process will just lead to lost hours, lost media, and lost sanity. It's a process that requires a ton of manual labor and forethought. My entire household hates my shit, but loves our plex library.
Kodi/Plex are fairly standardized in this. Movies need to be tagged Movie Title (year) [metadata], TV needs to be Show Name (original Broadcast year) - Season # Episode # [metadata]. If you don't do this, you can expect database mismatches, which means no artwork (or wrong artwork) when browsing. Those who spent the last few decades pirating tons of media but not tagging, renaming and organizing tend to bounce pretty hard from unified playback systems like Plex/kodi and live with just having a pc hooked up to a TV and double clicking the files in a browser, which is great until you start caring about things like proper framerate playback, HDR, surround sound etc.
And certainly this is a way to handle roms. There are dozens of dedicated emulators for popular systems, all with their own quirks and advantages/disadvantages. Most people just use the same rompack they downloaded in 2005 and zsnes. But for people like me that want to maintain current romsets and have a unified system to play them all back on, ideally on a TV with a 10 foot UI, setting up a Retroarch (or its dozens of hardware targeted derivatives) is the only real option.
At its core, Retroarch's concept and workflow aren't too abstract. You add your roms to playlists, you associate a core (a libretro port of an emulator that hooks into retroarch), you download thumbnails, select your rom, and hit play. From the game, you can bring up a retroarch menu to change a number of emulator settings. It's simple, it works, and it's great for sitting on a couch away from your PC when you just want to browse through a bunch of systems at once.
The workflow starts to fall apart once you attempt two things: Add a complete romsets, or attempt any customization to playlists.
The current item count in the No Intro Super Nintendo Entertainment System dat is 3962. That's Dumps from all known carts from around the world, including different revisions for titles, unreleased games, bootlegs, betas, tools, and other misc dumps. It's a lot of data, but luckily there are dedicated communities who do a lot of the hard of naming their roms and checking their data against the No Intro dats to build fairly complete collections. If you're a researcher, or a data hoarder, their work is heroic. And if you dump that entire directory into a Retroarch playlist, you now have 3158 items to scroll through before you reach Super Mario World (USA).
There are ways to truncate this. Dat managers that can select specific hierarchies of content and delete the rest (USA roms first, then japanese, then european, no betas etc). These are great if you just want a casual list of content and wont' be bothered if you're missing a specific rom, but for us researchers/data hoarders, we want access to everything we have available to us. There's no way in retroarch to automatically organize a playlist. No subfolders, no regional sorting. In fact, retroarch's playlists are fairly rigid. If for example you want to update a playlist with new roms you've added to a system, you have to reimport the entire folder, reassociate the cores, then use the playlist cleaner to remove any duplicate entries.
In fact it feels like retroarch is specifically punishing users who wish to import entire romsets. If you ever dig through their support forum, you find replies like this from moderators constantly:

It's simply not a workflow they care about.
So of course, the way to go about this is to build custom playlists that segregate your rom collection into categories that work for you. I've been going about this by organizing my roms based on regional tags (USA, Japan, and World for everywhere else). This helps individual playlists, but now creates dozens of extra playlists you have to scroll through when trying to find your content. It also breaks system specific icons as your playlist has to be named a specific way for them to function. You have to dive into the assets folder and meticulously rename every icon to match your playlists, as there's no built in icon picker in retroarch.
This is just one of the many issues a person will face in Retroarch. Since retroarch is designed to be used with a game controller, it can be fairly difficult to manage everything, so they include a Desktop manager. Except that it doesn't talk to the live instance of retroarch (And cannot run without retroarch also running). You have to restart both to see your changes, and if you change something in desktop and then adjust it in retroarch before restarting, your desktop mode changes are erased. Prepatched Romhacks and translations have no universal dat file (that someone else has to make for them), so there's no real support in building a comprehensive playlist with screenshots and artwork unless you're willing to do them by hand for each and every one. A number of Retroarch cores don't really support zipped bin/cue files and seem to be pushing you to convert everything into CHD files these days (some cores are better about this than others).
Playing by the rules makes sense when the rules are logical and easily interpreted. Retroarch's rules are archaic, it's documentation poor, and it's developers and maintainers strangely hostile to many of the things people wish to do with Retroarch. Trying to play by their rules while still maintaining a comprehensive and sorted collection creates more work for the user and a worse user experience at the end. But it's also the only real option if your objective is to have a comprehensive emulation solution for your TV with a 10 foot UI.
With an acceptance of its shortcomings, I am closer to finishing this project for the first time than the last several times I've attempted to do this. It's also been the worse media organization project I've ever dealt with.
i agree that browsing roms in retroarch is pretty unpleasant, especially if you have a lot. it's part of the reason i use other frontends (also because i think they look nicer)
edit: i think i'll mention some now:
- Windows: Playnite, Launchbox
- Android: Daijishō
- Windows/Linux: EmulationStation Desktop Edition