Wes Ellis./ a personal notebook
Technology. Stories. Side projects.
A few things worth writing down.
← Back to Retro Tech

Retro Tech

My ROM Naming Convention: Genre Codes Up Front, Region at the Back

A hand holding three Game Boy cartridges, including a red Pokemon cartridge, in front of a blurry screen.

Part 4 of the thread Keeping a media library tidy

THE SHORT VERSION4 points
  • The format is (GENRE) Title (REGION) (NOTES).ext, like (PLAT) Super Metroid (USA).sfc.
  • A four-letter genre code at the front means any file browser groups the folder by genre, no frontend needed.
  • Three-letter region codes and a short list of note codes for hacks, betas, translations and re-releases.
  • The rule that matters most is consistency. Pick your codes once and use them everywhere.

Most naming standards for game backups, like No-IntroPreservation projects that keep checksums of known-good game dumps. No-Intro covers cartridges, Redump covers discs. A matching checksum means a perfect copy.More: Preserving Your Own Game Collection: Dumps, Backups, Boxes and Old Hardware's, are built for identifying a file exactly. That's the right job for them. But when you're scrolling a folder of hundreds of NES games looking for something to play, "exactly which revision" matters less than "what kind of game is this".

So on the copies I actually browse, I put the genre first. Every file starts with a four-letter code, which means the folder sorts itself by genre in any file browser, on any device, with no frontend or database involved.

The format

(GENRE) Title (REGION) (NOTES).ext
Part What goes there
(GENRE) A four-letter code for the main genre
Title A clean, recognizable title, without the subtitle clutter
(REGION) A three-letter region code
(NOTES) Optional: hack, beta, translation and so on
.ext The original extension, untouched: .nes, .sfc, .chd, .iso

Some examples:

(PLAT) Super Mario Bros (USA).nes
(RPGE) Final Fantasy VII (USA).chd
(FGHT) Street Fighter II (JPN).zip
(METV) Super Metroid (USA).sfc
(PLAT) Super Mario Bros (USA) (HACK).nes
(RPGE) Final Fantasy V (USA) (TRAD).sfc
(ACTN) Mega Man X (JPN) (BETA).sfc
(RACE) F-Zero (USA EUR JPN).sfc
(PUZZ) Tetris (USA JPN).gb

The genre codes

Four letters, all caps. Enough to be readable, short enough not to crowd the title.

Code Genre Code Genre
ACTN Action PLAT Platformer
ACTV Action-adventure PNBL Pinball
ADVN Adventure PRGM Programming
ARKD Arcade PUZZ Puzzle
AUTO Auto-scrolling QUIZ Quiz and trivia
BEAT Beat-'em-up RACE Racing
BMUP Bullet hell RCNG Combat racing
BORD Board game RCES Resource management
CARD Card game RHYM Rhythm
DEFN Tower defense RPGE RPG
EDUC Educational RROG Roguelike
FGHT Fighting RUNR Runner
FLAT 2D simulation SCRL Scrolling shooter
FLGT Flight SHOT Shooter
HACK Hack and slash SIMU Simulation
HORR Horror SNDK Sandbox
LGHT Light gun SPRT Sports
MECH Mech combat STGY Strategy
METV Metroidvania STLH Stealth
MOBA Arena battle SURV Survival
MZLR Maze TACT Tactics
TEXT Text adventure TIME Time management
TYNG Typing VISN Visual novel
WRST Wrestling

Note

HACK is both a genre (hack and slash) and a note (a ROMA copy of a game cartridge's contents in a single file. It's what an emulator actually plays.More: Keep One Copy of Each Game in Your ROM Backups, by Region hack). Position tells them apart: the genre is always first, notes are always last. If that bugs you, rename one. Just do it everywhere.

Region and note codes

Region Code Note Code
United States USA Beta BETA
Japan JPN Prototype PROT
Europe EUR Demo DEMO
France FRA ROM hack or mod HACK
Germany GER Re-release RELN
Spain ESP Remix or edit RMIX
Italy ITA Fan translation TRAD
Official translation TRAN
Unlicensed UNLS

A game released in several regions gets them all, space-separated: (USA EUR JPN). Multiple notes work the same way: (HACK TRAN).

The rules I stick to

  1. Pick the one most representative genre. Plenty of games are two things. Choose the one you'd browse for.
  2. Clean the title. Drop subtitles, version numbers and extra junk. You can always look it up.
  3. Use the main release region when it's messy, or list them all.
  4. Keep a master list of which game got which genre. It's the thing that makes the second pass, and the next system, fast.
  5. Be consistent. One standard across every system, or it stops being useful.

Heads up

Frontends and scrapers that match games by file name may stop finding artwork after you rename. Scrapers that hash the file don't care. If your frontend matters more than your file browser, keep a set with the standard names for it, and use genre names on the copies you browse by hand.

Doing it without typing every name

Nobody should rename a library by hand. The order that works for me:

  1. Clean up the old dump names with Rename-RomFile.
  2. Thin out extra regional copies with Remove-DuplicateRom.
  3. Add the genre codes from a CSV of titles and codes with Add-RomGenreTag.

For a system I don't have a script for yet, I keep a template for describing the job to an AI assistant, so I ask for it the same way every time: the platform, the extensions, the naming format above, the genre codes, how regions appear in the old names, and a requirement for a dry-run mode and a log. Then I read the result carefully and test it on 10 or 20 files before letting it near the whole folder.