Skip to content
Ademir Terin Junior edited this page Oct 14, 2026 · 21 revisions

The folders in ~

ROMs in ~/roms. The collection lives in /home/fliperos/roms (\\fliperos\roms over the network), with one folder per emulator — mame, ps2, dreamcast (Flycast's discs), naomi, naomi2 and atomiswave (Flycast's arcades, one system per folder: in the frontends each one is a system, with its own platform in the Scraper), model3, dolphin, openbor/Paks, hypseus, model2 (a link to the emulator's folder in Wine) — and one per RetroArch core in ~/roms/retroarch/<core> (every core RetroArch knows: those in the core info files, ~330), each one with an _info.txt naming the system and the extensions. fliperos-roms creates whatever is missing at every login, so a new core from the Online Updater gets a folder. RetroArch opens its file browser in ~/roms, GroovyMAME looks in ~/roms/mame, Flycast in ~/roms/dreamcast, naomi, naomi2 and atomiswave (Dreamcast.ContentPath) and PCSX2 lists ~/roms/ps2 (if no folder has been chosen yet). /opt/fliperos/roms became a link to ~/roms: the old paths still work, and an earlier installation had its ROMs moved there (only renamed, without overwriting anything).

BIOS, artwork and settings. Next to ~/roms, fliperos-roms creates (at every login, only what is missing, each folder with its own _info.txt):

  • ~/bios (\\fliperos\bios) — RetroArch's system folder (system_directory): the loose files in it and the subfolders the cores look for. ~/bios/dc is the one for Flycast and the Flycast core (dc_boot.bin, dc_flash.bin, naomi.zip, awbios.zip...; Dreamcast.BiosPath in emu.cfg and FLYCAST_BIOS_PATH in fliperos-x11-run), ~/bios/ps2 the one for PCSX2 (its bios folder, ~/.config/PCSX2/bios, becomes a link there, with whatever it already had) and ~/bios/mame is in GroovyMAME's rompath (BIOS and devices such as neogeo.zip and qsound.zip; they still work from ~/roms/mame). /opt/fliperos/bios became a link to ~/bios. FliperOS ships no BIOS: everyone puts in their own.
  • ~/media (\\fliperos\media) — the frontends' artwork and text, one folder per type and, inside, the same folders as ~/roms (mame, model2, naomi, ps2, retroarch/snes9x...), so the art of a games folder is in the folder of the same name: snap (screenshots), preview (videos), logo (wheel), box (covers and flyers), marquee and texto (each game's description, .txt). Setup > Games > Scraper writes there, and the frontends read from there: Attract-Mode through the emulator's artwork lines, ES-DE through MediaDirectory, Pegasus through metadata.pegasus.txt and GroovyMAME's game list through mame.ini (snapshot_directory) and ui.ini (covers_directory, flyers_directory, marquees_directory, logos_directory). Artwork placed by hand with the ROM name (snap/mame/sf2.png for ~/roms/mame/sf2.zip) also shows in Attract-Mode, ES-DE and GroovyMAME. An installation from before this layout, with one folder per scraper platform (snap/arcade, snap/snes), is moved by itself the next time the launcher opens: see Adding games.
  • ~/config (\\fliperos\config) — links to the configuration of each installed emulator and frontend: retroarch, groovymame (/etc/fliperos/mame, with mame.ini and ui.ini), flycast, pcsx2, dolphin, supermodel, openbor (the .cfg files in ~/roms/openbor/Saves), hypseus, model2, attractmode, es-de, pegasus and skyscraper. Each link appears once the program has created its configuration (usually after being opened once); a deleted one comes back at the next login, and one left without a target (the program was removed) goes away.
  • ~/splashscreen (\\fliperos\splashscreen) — the boot splash themes (Plymouth), one folder per theme with its .plymouth file. The bundled ones (fliperos, fliperos-text, cogwheel, into-it and windoze95) are copied there when missing and follow the new versions of the image while left untouched (a hidden .bundled file keeps the copy's checksum); to change one, copy its folder with a new name. Setup > System > Splash screen previews them and sets the one used at boot (Installed system). More themes: Plymouth Themes on Gnome-look.

Custom folders

Setup > Games > Folders shows the whole structure: ~/roms, ~/bios, ~/media and ~/splashscreen and, inside them, the folder of each emulator (~/roms/mame, ~/roms/model2), of each RetroArch core (~/roms/retroarch/mame2010), of each Fightcade emulator, of each BIOS subfolder and of each type of art (~/media/snap, and inside it the same folders as ~/roms: ~/media/snap/mame, ~/media/snap/model2, ~/media/snap/retroarch/mame2010). Any of them can have its own custom folder: another folder used in its place, for when the ROMs, the art or the BIOS are on external storage (a USB disk, a second drive; the disks are mounted by themselves in /media/fliperos/<label>, where the folder browser opens). So the MAME 2010 sets can be on one disk, the Model 2 videos on another (~/media/preview/model2) and the Model 2 sets somewhere else. Each line says whether the folder has a custom folder, or how many of the folders inside it have one. ~/config is left out: it only holds links.

  • Link this to another folder — the folder becomes a link to the chosen one and the folder used until then is renamed next to it, with old- in the name and everything in it: ~/old-roms, ~/roms/old-mame, ~/roms/retroarch/old-mame2010, ~/media/old-snap. Nothing is copied or deleted. fliperos-roms then creates in the custom folder what is missing, and the default frontend reads the game folders again. Everything that looks in the folder — the emulators, the frontends, the Scraper, the network shares — goes through the link; the old- folders are not listed as systems. On a folder that already has a custom folder, Change the custom folder only swaps the link.
  • Unlink the custom folder — the link goes away and the old- folder gets its name back; if it was deleted, a new empty folder is created. Nothing is deleted from the custom folder.

Nothing about this is saved in a file: the state is what is on the disk, so a link made or removed by hand (SSH, the desktop) counts the same. A link you made yourself shows as a custom folder; a link whose disk is not connected shows as not found, and at login that folder is left alone while the others are created as usual; a link deleted by hand brings the old- folder back at the next login (or when Setup > Games > Folders is opened, also when an empty folder had already been created in its place). A folder with files in it is never removed to make room: if there is already an old-mame when a custom folder is added, the current one is kept as old2-mame. ~/roms/model2 as a link to the old Model 2 Emulator folder (earlier installations) is the default, not a custom folder; elsewhere it is a folder like the others (lib/folders.sh, config/fliperos-roms).

MAME ROM Cleaner

In Setup > Games > Cleaner, with the MAME CHD Cleaner. From a folder with a MAME romset, it copies (or moves) into the emulator's folder the games that pass the filters, with the parent, the BIOS and the devices they need. It works like ROMLister: it joins the XML of the romset's MAME version with catver.ini (categories and adult games), nplayers.ini (how two people play) and Controls.dat's controls.xml (the buttons the game really uses), and filters by what the cabinet has. For the Naomi, Naomi 2 and Atomiswave games the controls and the buttons come from Flycast's own game table instead: MAME's XML gives nearly all of them the board's generic panel (an 8-way joystick and 6 buttons), steering wheel and light gun games included, so with only joysticks marked in Controls those games no longer pass. Where the romset is: in a folder on this machine (disk, USB stick; the menu's own folder browser: Enter opens, .. goes back, Use this folder chooses) or in a network shared folder (Windows, NAS: the Setup asks for the computer, the user and the password and lists its shared folders; it is mounted read-only at /mnt/network with cifs-utils, the password goes in a file only root can read, never on the command line, and is only kept, in /etc/fliperos/netshare.cred, if you ask — lib/netshare.sh). That way the whole romset stays on the home computer and the cabinet takes only what it uses. For which emulator: GroovyMAME (the XML is groovymame -listxml; games go to ~/roms/mame and BIOS and devices to ~/bios/mame, which is also in the rompath: outside the games folder they don't show as games in the frontends), Flycast (the same romset and the same XML, only its systems: Naomi, Naomi 2 and Atomiswave, each in its own folder, ~/roms/naomi, ~/roms/naomi2 and ~/roms/atomiswave, with the BIOS — naomi.zip, naomi2.zip, awbios.zip and the special ones — in ~/bios/dc and without MAME's devices, which Flycast doesn't use; a set's system is that of the first BIOS in the romof chain), SM2-Emu and Supermodel (the same romset and XML, only the Sega Model 2 games — the model2 driver, Model 2/2A/2B/2C — into ~/roms/model2, or the Model 3 games — the model3 driver — into ~/roms/model3; neither uses BIOS, and of MAME's devices only SM2-Emu's I/O boards go along, model1io.zip and model1io2.zip, which Daytona USA, Desert Tank and Virtua Cop need beside their zip and which the Model 2 game list hides; as in Flycast, MAME's emulation status doesn't filter; a folder with model2, model3 or supermodel in its name already suggests it), MAME 2010 / MAME 3D (0.139, the one in RetroArch's mame2010 core, which runs the PlayStation-based (PSX) arcade games well — ZN-1/ZN-2, Namco System 11/12, Konami GV/GQ, Taito G-NET: Tekken 3, Soul Calibur, Street Fighter EX —, so its filter starts with the PlayStation-based hardware preset; a folder with 2010 or MAME 3D in its name already suggests it; the XML ships in the image at /usr/local/share/fliperos/mame2010.xml.xz, pinned by commit and sha256; games and BIOS in ~/roms/retroarch/mame2010, where the core looks for them) or another version (an XML from mame -listxml). What was read from the XML stays in /var/cache/fliperos (a minute with GroovyMAME's; the next read takes a second). The parameters screen shows each parameter with its current choice; Enter opens its options — choose one (radio, (*)) or check several (checkbox, [x]: Space or button 3 toggles, a checks all, Enter confirms) — and returns to the screen with the choice made. The parameters: games (coin-op machines only, or everything), emulation (working, with imperfect, or everything), categories (the genres of catver.ini, with how many sets each has; slot machines, pinball, computers and consoles start unchecked; Mahjong, which catver.ini keeps inside Tabletop, is a category of its own and also starts unchecked, in every preset but Everything), adult games (* Mature * in catver.ini), players, play mode (from nplayers.ini: single player, two or more alternating, two or more simultaneous, not stated), buttons (those of controls.xml when it knows the game — Metal Slug has 4 in MAME and uses 3 —, otherwise MAME's), panel controls (8, 4 and 2-way joystick, two joysticks per player, trackball, spinner, paddle, rotary, analog, pedals, light gun, keyboard, mahjong; a buttons-only game always passes; the 0.139 types, joy8way, vjoy2way, doublejoy8way, and the current ones, joy and doublejoy with ways), screen (horizontal, vertical), resolution (low, up to 288 lines, the only progressive one on a 15 kHz tube; medium; high — from the XML's pixclock/htotal or, without them, from the lines), clones (the best version of each game, parents only, or all) and the preferred region, bootlegs, prototypes, decades, vector games, games with CHD (keep, remove, or only those), board (Neo-Geo, CPS-1, CPS-2, CPS-3, the PlayStation-based ones — ZN-1/ZN-2, Namco System 10/11/12, Konami GV/GQ/573/Twinkle, Taito G-NET, from the Sony CPU in the XML — the Midway Mortal Kombat boards, Sega Model 2, Sega Model 3, Sega Naomi, Sega Naomi 2 and Sammy Atomiswave; with no board checked every board goes, except Naomi, Naomi 2 and Atomiswave, which run better in Flycast and only go to GroovyMAME when checked). The three data files ship in the image, in /usr/local/share/fliperos/romclean (config/romclean in the repository): catver.ini 0.289 from progetto-SNAPS, nplayers.ini 0.278 from NPlayers (CC BY-SA 3.0) and controls.xml 0.141.1 from Controls.dat. To use newer ones, or the ones that came with your romset, put them with the romset: the Setup looks first in its folder, in the one above and in the folders subfolder (the MAME UI's), and only then in the system folder, which an update rewrites. The screen says which ones it found and their version (Data files); without one of them, its parameters don't show. Presets: Joystick cabinet (arcade only, up to 2 players and 6 buttons, joysticks, one version of each game, no bootlegs, prototypes or adult games), Everything that works, PlayStation-based hardware (the MAME 3D games) and Everything. Whatever the chosen games use goes along: the parent (in a merged romset the clone is in its zip), the BIOS and the devices with ROMs (romof, cloneof, device_ref), also those of the games already at the destination. Before touching anything, the summary (how many go and their size, the free space, how many aren't in the XML, which are left alone) and the list; the copy shows its progress, each file arrives as .part and only then gets its name (an interrupted copy never passes as complete), whatever is already at the destination with the same size stays — repeating resumes where it stopped — and what arrives is owned by the owner of the emulator's folder. Move (only from a writable folder) takes the files out of the romset and then asks whether to delete what's left; Flycast's sets never enter that list, so the same romset can be cleaned for Flycast afterwards — except in a MAME 2010 romset, which Flycast can't read: there the Naomi and Atomiswave sets the filter leaves out are deleted like the others, instead of staying in the core's folder where the frontend would list games MAME 0.139 doesn't run (config/fliperos-romclean, lib/romclean.sh).

MAME CHD Cleaner

CHDs usually come in a separate, huge collection. This item looks at the games already in the emulator's ROM folder (~/roms/mame; for Flycast, ~/roms/naomi and ~/roms/naomi2; for MAME 2010 / MAME 3D, the core's folder), checks in the MAME XML which ones use a disk and copies, from the CHD folder (one subfolder per game, on this machine or in a network folder), only theirs, into the ROM folder (<folder>/<game>/<disk>.chd, where MAME and Flycast look for them). A clone's disk that is the same as the parent's comes from the parent's folder; a disk without a dump doesn't count. From each folder only the disks those games use are taken: in a merged collection the parent's folder also holds the disks of every other version, and they stay behind (the Downloader does the same, so they are never downloaded). The screen shows how many games use CHDs, how many folders were found and their size, the free space and the list of what wasn't found; you can include the clones inside the zips (merged romset) and change the ROM folder. The copy shows its progress and resumes where it stopped; from a writable folder you can also move (fliperos-romclean chds).

Downloader

Setup > Games > Downloader gathers what downloads games: ROM/CHD MAME torrent and Free games. The torrent screen, in order: the Filter (the same parameters screen as the ROM Cleaner, for GroovyMAME, Flycast, SM2-Emu, Supermodel or MAME 2010 / MAME 3D (the PlayStation-based arcade games), saved apart, only for the torrent; until one is saved, the Joystick cabinet preset), the ROM set magnet link (required), the CHD set magnet link (optional; both come filled in with the links shipped in the image, MAME 0.289 ROMs and MAME 0.288 CHDs, both merged, from /usr/local/share/fliperos/downloader-magnets: Enter uses them, or paste another), the Download folder (the folder browser; by default the emulator's, ~/roms/mame with the BIOS in ~/bios/mame — elsewhere the BIOS go with the games; for Flycast, the folder of naomi, naomi2 and atomiswave) and Start the download, which needs the ROM link — the CHDs are those of the games the romset brings. It downloads only what the filter chooses — the games, with their parents, BIOS and devices, and the CHDs of those games — never the whole set; the Setup says so when a link is pasted. Before marking anything, Start checks that the whole download fits on the disk; if not, it says how much is needed and how much is free. Where the sets are in the torrent is found from the file list: at its top or in any subfolder (MAME 0.289/ROMs (merged)/, next to Software Lists, readmes or extras) — the folder with the most .zip/.7z sets, or, for CHDs, with the most <game>/<disk>.chd folders; the Setup shows which folder and how many sets, and the rest of the torrent is never downloaded. A torrent without any (the CHD link pasted as the romset) is refused. Transmission does the download: its own transmission-daemon (fliperos-transmission.service, as the fliperos user, at low CPU and disk priority, RPC only on 127.0.0.1:9092; the stock transmission-daemon.service is masked). The link is added running (paused, Transmission doesn't look for peers) and, as soon as the file list arrives, stopped with no file marked; the list goes through fliperos-romclean (scan --names, chds --names --with), only the chosen files are marked, and what is already in the emulator folders isn't downloaded again. The terminal shows a progress bar (size, peers, speed, time left); any key returns to the menu and the download goes on, even with a game open. When a torrent ends, each file goes to the download folder (the BIOS to ~/bios/mame, the CHDs in <game>/) and the torrent leaves Transmission without seeding. When the filter changes (or a new MAME version), with links set up, the Setup says how many ROMs and CHDs it adds (and their size) and how many it deletes, with the list, and asks before applying; only what the downloader brought is ever deleted, never files put there by hand. Removing a link can also delete what it brought. A parent, BIOS or device that a game still in the folders uses (the ROM folders of the filter and GroovyMAME's rompath) is never deleted: neogeo.zip stays while there is an MVS game, even one copied by the ROM Cleaner (fliperos-romclean uses). State in /var/lib/fliperos/downloader (config/fliperos-downloader, lib/downloader.sh). Afterwards, AttractPlus > ROM List updates the game names in the frontend.

Free games

Setup > Games > Downloader > Free games downloads open-source homebrew into the RetroArch core folders (~/roms/retroarch/<core>), so the frontends don't start empty and to test video, sound and controls without anyone's ROMs: the 240p Test Suites for NES, Game Boy and GBA, Thwaite, Nova the Squirrel, Libbet and the Magic Floor and µCity. Each file comes from the project's own releases page, with a pinned sha256 and the license in the list (GPL and zlib, checked in each one's repository); only those for installed cores, and what is already there stays. The image ships nobody's ROMs or BIOS (config/fliperos-freeroms, lib/freeroms.sh).

Clone this wiki locally