Skip to content

MAME4droid 2026(0.289) 1.40

Latest

Choose a tag to compare

@seleuco seleuco released this 27 Aug 23:52

Release Notes

Added NetPlay Public Rooms

Until now, NetPlay worked over the internet with no account, no relay, and no service to trust. The one thing it could not do was find you an opponent: you still had to know someone already, and swap an IP address with them by hand.

Public Rooms is that missing half. It's an optional board where hosts advertise the game they are hosting, so anyone with the same ROM can tap it and connect.

What it is not is a relay. The board introduces two players and then steps out of the way — the match still runs directly between the two devices, exactly as it did before, and nothing about it passes through any server of mine.

On the board

  • Room codes. Every room gets a short code you can pass to a friend.
  • PIN rooms. Tick Require PIN and the room still appears, marked as protected, but only the people you told can get in. The PIN itself never reaches the server — only a hash of it does.
  • A color-coded connection forecast. Green, amber, or red per room, based on what STUN actually measured about both routers rather than a guess. Two symmetric NATs with no way through show red and refuse the join.
  • Same-network rooms are flagged, so two devices in one house dial the LAN side instead of going out to the internet and back. That match is made between two salted fingerprints — neither device's address is ever revealed to anyone.
  • A ROM check before you join. The app looks for the game in your ROMs folder and names the missing file, instead of letting you join and break the host's room.
  • Unusable rooms stay listed but greyed out rather than hidden. Knowing a match is happening is worth something even when this build cannot take it.

Drop-in NetPlay

Waiting for someone to turn up used to mean staring at a dialog screen. Now you can tick Start now, let anyone join and simply play. Your room stays on the board while you do, and when somebody claims it, your machine's state is handed over and you carry on together from that exact moment.

  • When they leave, you keep playing on your own as if NetPlay had never happened. Open it again and the room goes back up.
  • Rollback sessions only — the state transfer that makes drop-in possible does not exist in Lockstep.
  • Switching it on mid-game may restart the game, and the app warns you before you commit. NetPlay pins a set of things the instant a game boots (your saved settings and NVRAM, Lua plugins and cheats, the sound rate, the working copy of a CHD) and not one of them can be applied to a game already running. Ignoring that does not fail loudly: the two machines just drift apart over the following minutes with no error to point at.

About your data — the short version is that there isn't any

MAME4droid is made by one person and given away. No ads, nothing to unlock, nothing to subscribe to, and no budget for servers either. Public Rooms is a good compromise, and it is what makes finding an opponent possible at all: it runs on a tiny free instance with no database, which keeps nothing about you.

  • It is opt-in. You are asked the first time, and if you decline, the board is never contacted. Manual NetPlay keeps working exactly as it always has.
  • Your address is never written to a log. It lives in memory only while your room is up, is handed to the one player who joins you, and disappears with the room. The session records the server does keep contain no IP addresses at all.
  • The board shows an address to nobody — not even through the "same network" badge, which is a comparison of two salted fingerprints. The salt is generated fresh every time the server starts, so yesterday's records cannot be matched against today's even from the inside.
  • Nothing identifies your device. No account, no login, no name, no advertising ID, nothing stored on your phone that another session could recognize. Two visits from you are not linked to each other.
  • Rooms expire in about a minute unless the host keeps asking to keep them alive.
  • There is no chat, and there will not be. In-app chat means moderating what strangers say to each other: a real responsibility with a pile of store obligations attached, and a project this size cannot honestly carry it. Use Discord, or whatever you and your friends already use — all that needs to cross is a room code.
  • The server is open source as well. Point the app at your own, and none of the above involves me at all.