About This File
What's this?
This is a Windows Powershell script you can use to sort any No-Intro romset into a consistent and intuitive structure. The goal is to sort and organize ROM files by region, release type and revision.
This script creates a directory structure to accommodate for all the various release types and flags found in a No-Intro set, which is then replicated to folders for the four major release regions, then sorted appropriately.
By default, this script creates full sets for each region - for example, (World) releases are actually COPIED to every major region - I wanted to avoid regional biases where I could so that if someone wanted a full Japanese set or a European set, you only need run the script and grab the contents of the corresponding folder. You can disable this by commenting or removing the "Regional Bias" section of the script.
Only available as a Windows Powershell script, not compatible with Linux or macOS currently.
Why's this?
In order to simplify compatibility with various frontends, to satisfy my own preferences, and possibly the preferences of others. A few use-cases can be found below.
- When using LaunchBox, playlists can be created by using the "Application/ROM Path" parameter - the filepaths/folder structure created by this script will allow you to be as granular as you would like.
- When using other frontends or utilities, usually you're actually just browsing your file/folder structure - the filepaths/folder structure created by this script are meant to be descriptive and (hopefully) intuitive.
- Once the script is run, one could simply delete entire regions, remove all the various Test Programs, trim BIOS files, delete Demo or Sample roms, Prototypes, and easily create a custom set that suits their individual taste.
- This script is entirely filetype agnostic - it doesn't care about file extensions, so as long as the set of files you're applying this script to uses No-Intro's flags, this script can be used to sort them - one could also use this script to sort through artwork/image/media files for corresponding ROM files.
Instructions
Simply copy this script file into the folder containing your rom files, and double click to run it.
That's it!
If you happen to receive an error saying something along the lines of "Running Scripts is Disabled on this System" you can open the folder in Terminal or PowerShell and run the script with the following command. I'll defer to this article if you would like more information.
powershell -ExecutionPolicy Bypass -File .\Machtendo No-Intro ROM Parse v5.0.ps1
Logic & Structure
How have these files been sorted, and why?
BIOS Files
BIOS files are first moved into a _BIOS folder prior to any sorting functionality. This is so that any available version is immediately and easily accessible for use with an emulator if needed.
Regions
I'm going by the three historically major release regions, with a fourth "Other" region to cover the other minor release regions.
-
North America
- US
- Canada
-
Japan
- Japan
-
Europe
- Italy
- Spain
- Sweden
- France
- Germany
- Australia
- Denmark
- Scandinavia
-
Other
- Korea
- Brazil
- Argentina
- Taiwan
- Mexico
- Russia
- Hong Kong
- Netherlands
- China
- Greece
- Asia
No-Intro Flags
The file structure for the No-Intro flags is replicated to the four regional folders described above.
- Aftermarket Releases - Licensed, Unlicensed, or Homebrew games released for a platform after its "active" or "canonical" lifespan.
- Hacks - Not strictly within the scope of No-Intro - these ROMs have had patches applied to them to modify, transform, or attempt to improve an existing game. i.e. patches that can be found at RDHN (romhacking.net)
- Alternate Releases - Re-release of a ROM on a later platform or in a "Classics" Collection, i.e. Virtual Console, Nintendo Switch Online, or compilations such as "Castlevania Anniversary Collection"
- Official Releases - Licensed games released at the time of a platform's "active" lifespan.
- Pre-Release - Unfinished games - betas, demos, or prototypes not meant for the general public
- Test Cartridges & Utilities - These are tools generally used by developers or hardware manufacturers, mostly for testing purposes or diagnostics/troubleshooting
- Translations - Again, not strictly within the scope of No-Intro, but these are ROM files with an applied translation patch, commonly denoted with the [T-En] flag. Note that the region that these translations are targeting is the region the rom will be moved to - i.e. target language is English, therefore ends up in the North America > Translations folder. Currently, only [T-En] is supported.
- Unlicensed Releases - Unlicensed games that were released DURING the canonical lifespan of the platform in question without explicit permission or input of the platform's manufacturer.
- Previous Revisions - Earlier releases of a given title - The latest Revision is kept in the "Official Releases" folder, while the earlier revisions end up here.
Notes & Clarification
- Keep in mind, this script is only intended for use with romsets following the No-Intro naming convention. More information can be found here: https://wiki.no-intro.org/index.php?title=Naming_Convention
- This script cares ONLY about the No-Intro naming convention - the use of DAT files and ROM managers have not been considered, and splitting up these ROM files may break compatibility with said DAT files or ROM managers.
- Starting with v5.0, support for parsing/sorting numbered revisions was added - I have not yet verified if this script generates a perfect DAT-worthy 1G1R set.
- By default, no ROM files are deleted by this script - I'm only sorting and organizing. I am also not responsible for any undesirable effects or outcomes running this script on your machine may have.
- Feedback welcome in the comments!
Tested with the following platforms
Atari - 2600
Atari - 5200
Atari - 7800
Atari - Jaguar
Atari - Lynx
Bandai - WonderSwan
Bandai - WonderSwan Color
GCE - Vectrex
NEC - PC Engine - TurboGrafx-16
NEC - PC Engine CD
NEC - PC Engine SuperGrafx
Nintendo - 3DS
Nintendo - Family Computer Disk System
Nintendo - Game and Watch
Nintendo - Game Boy
Nintendo - Game Boy Advance
Nintendo - Game Boy Color
Nintendo - Nintendo 64
Nintendo - Nintendo 64DD
Nintendo - GameCube
Nintendo - DS
Nintendo - Nintendo Entertainment System
Nintendo - Satellaview
Nintendo - Super Nintendo Entertainment System
Nintendo - Virtual Boy
Nintendo - Wii
Sega - 32X
Sega - Dreamcast
Sega - Game Gear
Sega - Master System - Mark III
Sega - Mega Drive - Genesis
Sega - Saturn
Sega - SG-1000
SNK - NeoGeo Pocket
SNK - NeoGeo Pocket Color
Sony - PlayStation
Sony - PlayStation 2
Sony - PSP
Sony - PS Vita
Edited by machjas
Release v5.0
What's New in Version 5.0 See changelog
Released
- Migrated from Windows Batch File to PowerShell Script for more functionality
-
Added support for No-Intro numbered revisions (Rev 1), (Rev 2), etc.
- The latest revision titles are kept in the "Official Releases" folder, while earlier revisions are moved to a "Previous Revisions" folder.
- Added prompts to display current step during the execution of the script, and prompts again when that step is completed to allow for a more transparent/verbose end-user experience.