Repository navigation
ROMs
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/dcis the one for Flycast and the Flycast core (dc_boot.bin,dc_flash.bin,naomi.zip,awbios.zip...;Dreamcast.BiosPathinemu.cfgandFLYCAST_BIOS_PATHinfliperos-x11-run),~/bios/ps2the one for PCSX2 (itsbiosfolder,~/.config/PCSX2/bios, becomes a link there, with whatever it already had) and~/bios/mameis in GroovyMAME'srompath(BIOS and devices such asneogeo.zipandqsound.zip; they still work from~/roms/mame)./opt/fliperos/biosbecame 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, one per system (the Skyscraper platform:arcade,snes,dreamcast,ps2,gc...):snap(screenshots),preview(videos),logo(wheel),box(covers and flyers),marqueeandtexto(each game's description,.txt). Setup > Scraper writes there, and the frontends read from there: Attract-Mode through the emulator'sartworklines, ES-DE throughMediaDirectory, Pegasus throughmetadata.pegasus.txtand GroovyMAME's game list throughmame.ini(snapshot_directory) andui.ini(covers_directory,flyers_directory,marquees_directory,logos_directory). Artwork placed by hand with the ROM name (snap/arcade/sf2.png) also shows in Attract-Mode, ES-DE and GroovyMAME. -
~/config(\\fliperos\config) — links to the configuration of each installed emulator and frontend:retroarch,groovymame(/etc/fliperos/mame, withmame.iniandui.ini),flycast,pcsx2,dolphin,supermodel,openbor(the.cfgfiles in~/roms/openbor/Saves),hypseus,model2,attractmode,es-de,pegasusandskyscraper. 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.
In Setup > Cleaner (MAME/Flycast/etc ROM/CHD), 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. 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), 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), 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 — and the Midway Mortal Kombat boards) and, for GroovyMAME, whether Naomi and Atomiswave games also go to it (the default is to leave them to Flycast). Without one of the three data files, its parameters don't show; the screen says which ones were found and their version. They come with the romset: the Setup looks for them in its folder, in the one above, in the folders subfolder (the MAME UI's) and in /usr/local/share/fliperos/romclean (the image doesn't ship them: catver.ini is from progetto-SNAPS, nplayers.ini from NPlayers and controls.xml from Controls.dat). 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 (config/fliperos-romclean, lib/romclean.sh).
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. 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).
Setup > 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 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), 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. State in /var/lib/fliperos/downloader (config/fliperos-downloader, lib/downloader.sh). Afterwards, AttractPlus > ROM List updates the game names in the frontend.
Setup > 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).