Code Monkey home page Code Monkey logo

romm's Introduction


Buy Me A Coffee

Overview

RomM (stands for Rom Manager) is a game library manager focused in retro gaming. Manage and organize all of your games from a web browser.

Inspired by Jellyfin and after found that the awesome Gameyfin project is not supported for arm64 architectures and it is a general game library manager, I decided to develop my own game library solution.

Available as a docker image (amd64/arm64)

โšก Features

  • Scan your game library (all at once or by platform) and enriches it with IGDB metadata
  • Access your library via your web-browser
  • Possibility to select one of the matching IGDB results if the scan doesn't get the right one
  • EmuDeck folder structure compatibility
  • Multiple files games support
  • Download games directly from your web-browser
  • Edit your game files directly from your web-browser
  • Region, revision/version and extra tags support
  • Works with SQLite or MaridDB (SQLite by default)
  • Responsive design
  • Light and dark theme

๐Ÿ›  Roadmap

  • Upload games directly from your web-browser - issue #54
  • Manage save files directly from your web-browser - issue #55
  • Set a custom cover for each game - issue #53

Preview

๐Ÿ–ฅ Desktop

Video preview
romm_readme.mp4

๐Ÿ“ฑ Mobile

Video preview
RomM.Presentation.-.mobile.mp4

Installation

๐Ÿณ Docker

Last version of the docker image.

Check the docker-compose.yml example.

Get API key from IGDB for the CLIENT_ID and CLIENT_SECRET variables.

Configuration

๐Ÿ“ Folder structure

RomM accepts two different folder structure by priority.

RomM will try to find the structure 1 and if it doesn't exists, RomM will try to find structure 2.

  • Structure 1 (high priority) - roms folder at root of library folder:
library/
โ”œโ”€ roms/
   โ”œโ”€ gbc/
   โ”‚  โ”œโ”€ rom_1.gbc
   โ”‚  โ”œโ”€ rom_2.gbc
   โ”‚
   โ”œโ”€ gba/
   โ”‚  โ”œโ”€ rom_1.gba
   โ”‚  โ”œโ”€ rom_2.gba
   โ”‚ 
   โ”œโ”€ ps/
      โ”œโ”€ my_multifile_game/
      โ”‚   โ”œโ”€ my_game_cd1.iso
      โ”‚   โ”œโ”€ my_game_cd2.iso
      โ”‚
      โ”œโ”€ rom_1.iso
  • Structure 2 (low priority) - roms folder inside each platform folder
library/
โ”œโ”€ gbc/
โ”‚  โ”œโ”€ roms/
โ”‚     โ”œโ”€ rom_1.gbc
โ”‚     โ”œโ”€ rom_2.gbc
|
โ”œโ”€ gba/
โ”‚  โ”œโ”€ roms/
โ”‚     โ”œโ”€ rom_1.gba
โ”‚     โ”œโ”€ rom_2.gba
|
โ”œโ”€ ps/
โ”‚  โ”œโ”€ roms/
โ”‚     โ”œโ”€ my_multifile_game/
โ”‚     โ”‚  โ”œโ”€ my_game_cd1.iso
โ”‚     โ”‚  โ”œโ”€ my_game_cd2.iso
โ”‚     โ”‚
โ”‚     โ”œโ”€ rom_1.iso

โš™๏ธ Config.yml file

RomM can be configured through a yml file. This is used to exclude platforms and/or roms to be scanned.

For a configuration change to take effect, RomM must be restarted.

Check the config.yml example.

Check the docker-compose.yml example to see how to bind it.

Naming convention

๐ŸŽฎ Platforms support

If the RomM folder structure is followed, any kind of platform/folder-name is supported for the core features. For having extra metadata as well as cover images and platforms icons, the following table shows how to name your platforms folders. This will change over the time, adding games metadata for more platforms. Make sure that the platforms folder names are lowercase.


Platforms support list

slug name games metadata
3ds Nintendo 3DS โœ…
amiga Amiga โœ…
arcade Arcade โœ…
atari atari โŒ
coleco coleco โŒ
c64 Commodore C64/128/MAX โœ…
cpc cpc โŒ
cps1 cps1 โŒ
cps2 cps2 โŒ
cps3 cps3 โŒ
daphne daphne โŒ
dc Dreamcast โœ…
dos DOS โœ…
fairchild fairchild โŒ
fba2012 fba2012 โŒ
fbneo fbneo โŒ
fds Family Computer Disk System โœ…
gb Game Boy โœ…
gba Game Boy Advance โœ…
gbc Game Boy Color โœ…
gg gg โŒ
gw gw โŒ
intellivision Intellivision โœ…
jaguar Atari Jaguar โœ…
lynx Atari Lynx โœ…
md md โŒ
megaduck megaduck โŒ
ms ms โŒ
msx MSX โœ…
n64 Nintendo 64 โœ…
nds Nintendo DS โœ…
neocd neocd โŒ
neogeo neogeo โŒ
nes Nintendo Entertainment System โœ…
ngc Nintendo GameCube โœ…
ngp ngp โŒ
odyssey odyssey โŒ
pce pce โŒ
pcecd pcecd โŒ
pico pico โŒ
poke poke โŒ
ps PlayStation โœ…
ps2 PlayStation 2 โœ…
ps3 PlayStation 3 โœ…
ps4 ps4 โŒ
psp PlayStation Portable โœ…
psvita PlayStation Vita โœ…
scummvm scummvm โŒ
segacd Sega CD โœ…
segasgone segasgone โŒ
sgb sgb โŒ
sgfx sgfx โŒ
snes Super Nintendo Entertainment System โœ…
supervision supervision โŒ
switch Nintendo Switch โœ…
wii Wii โœ…
win PC (Microsoft Windows) โœ…
wiiu Wii U โœ…
wonderswan WonderSwan โœ…
wonderswan-color WonderSwan Color โœ…
xbox Xbox โœ…
xbox360 Xbox 360 โœ…
xboxone Xbox One โœ…


๐Ÿ“‘ Tags support

Games can be tagged with region, revision or other tags using parenthesis in the file name. Region and revision tags must be built with the following reserved words:

  • Region tags must be prefixed with "reg-": (reg-EUR) / (reg-USA) / (reg-Japan) / (reg-whatever)
  • Revision tags must be prefixed with "rev-": (rev-1) / (rev-v2) / (rev-whatever)
  • Any other tag can have any structure
  • Example: my_game (reg-EUR)(rev-1)(aditional_tag_1)(aditional_tag_2).gba

Tags can be used with the search bar to help to filter your library.

โ› Troubleshoot

  • After the first installation, sometimes the RomM container can have problems connecting with the database. Restarting the RomM container may solve the problem.

๐Ÿงพ References

๐ŸŽ– Credits

romm's People

Contributors

zurdi15 avatar duhow avatar alexkalopsia avatar gantoine avatar flippedcracker avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.