Show HN: AuraCoder – Gen AI Learning Platform (auracoder.com)
Show HN: I'm 13 and I built an AI PDF Reader (github.com)
Show HN: RomM – An open-source, self-hosted ROM manager and player
Think of it as Plex or Jellyfin for your ROM library: it automatically fetches metadata, artwork, and game information from online metadata sources to transform your folders into a browsable collection.
You can play games directly in the browser for consoles like the N64, Game Boy Advance, Nintendo DS, and PlayStation 1, using the integrated web emulator (https://emulatorjs.org/). Members of the community have released integrations for Playnite (Windows), muOS (Anbernic handhelds) and Decky Loader (Steam Deck), with many more in the works.
The team has been working on RomM for just over two years now, and we're incredibly proud of what we've built so far. There's no company behind the project, just a bunch of friends building something together that we've wanted for a long time. And of course, the code is open-source and AGPLv3 licensed.
Check out the (kinda slow) demo running on an ultra-cheap VPS: https://demo.romm.app/
So for example an article on "2D platforming" that discusses the implementation in Super Mario, and includes a "demo" button which launches a web emulator with a save state that demonstrates a specific jumping section of the game.
Legally perilous maybe, although my non-lawyer brain sees that as fair use, especially if the emulator doesn't let you play the full game. Idk, but it'd be a unique thing on the internet.
Edit: this is awesome btw, im definitely setting up a personal instance soon
IANAL, but I think what a lot of people don't understand is that "fair-use" is a defense. Which basically means you have to be prepared to argue in in court. A lot of potential fair-use is quashed before it gets to that point.
It's also a balancing test, which means that it's very fact/context dependent, and subjective, which results in for a lot of cases, you really won't know until you actually get to court.
"Playable Quotes for Game Boy Games" - https://www.youtube.com/watch?v=z9JYOZWLMlo
https://github.com/rommapp/romm/pull/1515
It seems like OP already replied with an upcoming feature to entirely eliminate your concern, but I would also point out that this doesn't mean the cloud service knows what games you're playing, they just know what games you have which for many gamers are two very different things.
That's especially true for those with a large enough ROM collection to be interested in tools to manage and simplify access to their libraries. I'd be willing to bet that the majority of potential users have collections that are exponentially larger than the list of games they actually play, in many cases some variety of a "complete" collection.
It looks much less impressive without cover art though.
As somebody who's setup a lot of little retroboxes, the idea of doing it once and having my collection served off of my homelab to all my other devices is incredibly appealing. Web-based emulation has come a very long way. Still I prefer to play off of my individual devices many of which don't have good browser support.
Setting those systems up can take hours each, but being able to point something like a Batocera instance or an ES-DE setup at a server and have it self populate with roms, bios files, screenshots, etc, would be a dream. It sounds like this might be the future of the emulation ecosystem and it sounds amazing!
Romm works really great for this too.
I’ve used RomCenter and other tools in the past and I’d love to see similar, comprehensive functionality in something more modern.
It looks like they do support integrating with a tool called Igir to handle validating and naming ROMs using DAT files.
https://docs.romm.app/latest/Tools/Igir-Collection-Manager/
https://docs.romm.app/latest/Tools/Igir-Collection-Manager/ | https://igir.io/usage/desktop/romm/#
https://igir.io/dats/processing/#parentclone-inference
My second thought was, for people who play a lot of ROMs, they're either doing it because they know more about those games than typical online metadata sources do; and/or a big chunk of them are modded or even completely homebrew.
The solution isn't ideal for those who hoard entire romsets, but it's great for those of us who curate their collections down to a more manageable size. That can be anywhere from a couple hundred to a couple thousand games, and the metadata sources are fairly robust at that scale.
But that's probably not what it means. Kids throw words around meaning all sorts of strange things these days.
For the maintainers, does this pull the metadata (e.g Title ID or PKG ID) from the (supported) ROM files directly, or only from the filename? I skimmed the README and Docs and couldn't find a clear answer.
Playing through a browser seems like a downside for me personally
I usually play on Windows with Playnite (https://playnite.link/), and the plugin (https://github.com/rommapp/playnite-plugin) allows Playnite to pull and display the list of games for each system, after which I can install the ones I want to play onto my PC.
I have this installed on my unRAID instance and haven't yet figured this out..
(Pro tip: Use the {datName} template token instead of --dir-dat-name if you use clean with single DAT files, or the "only delete from folders we touched" rule doesn't apply, learned the hard way).
If you have time:
Does it (or can it) run emulators natively? I'm trying to get my head around js emulator, how is that libretro? Is libretro compiled to wasm?
Is it running retro arch underneath or have you managed to implement the libretro API?
I love and hate retroarch. Its menus are ridiculous but it's still easier than managing multiple emulators.
I believe it's running RetroArch, as when you load a corrupt file or start without selecting a game it displays the RA menu. If you want to dig deeper you can check out their github or ask in their Discord, the team have been wonderful to work with.
1. Does the web interface allow you to download your ROMs in a similar fashion to Plex letting you download your files? I could see myself using this to fetch from my libraries and would like a nice GUI box art interface to grab a game I'm looking for. 2. How does this work with ROM hacks? How is the metadata pulled? Filename? Header? How could I set custom metadata where it doesn't match. 3. Does this have an accessible and documented API if I want to build extensions to it (or am I forced to use the interface?)
1. That's exacty what RomM (among other things) does. You will have a Jellyfin/Plex interface from where download your games 2. Right now we match using the name of the file, but we are planning to add match by hash thaat will increase the accuracy even more. If it doesn't match anything, you are able to match it manually from the interface in a very user friendly way. 3. Yes, our API docs are integrated into RomM itself, so any RomM instance you can access will show the docs. It can be your own instance, or the demo site one for example (https://demo.romm.app/api/docs) or (https://demo.romm.app/api/redoc)
Apart from that, we have some integrations with different systems, like a plugin for playnite or an app for muos or portmaster to avoid download from the browser itself but from a native client (https://docs.romm.app/latest/Integrations/Playnite-plugin/) and (https://docs.romm.app/latest/Integrations/muOS-app/). A lot more integrations are in the works
Is it MAME but for playing in a browser?
You can share it with your friends so they can access your library, use the plugins to download games directly onto some platforms (without a browser), or play older systems in the browser for a quick session.
At some point we'd like to handle save file sync between devices so you can stop playing on one device and pick up where you left off on another!
How does it handle modern games? I have a lot of DRM free games and small indie projects I've collected/archived and I want a way to neatly display them and download them
It would allow you to store your games on the server, sync the list in Lutris, and install them when you want to play them. I'd like to get a working POC to demo to the Lutris team soon-ish. Oh and if anyone sees this and would like to help get us there, contributions are always welcome!
If you are aiming for 'beauty' (whatever that actually means), then build it to a high standard and let other people find the words on their own accord.