A Python utility to organize GameBase64 game collections (Commodore 64, Amiga, etc.) from zip archives into a structured folder hierarchy based on metadata extracted from VERSION.NFO files.
Current Stable Release: v1.3.2 (CLI with extended options) GUI Status: Work in Progress (Experimental)
👉 Recommended: Use the CLI (gb64_reorganizer.py) for production use
- ✅ Automatic Organization: Extracts games from zip files and organizes them into a clean folder structure
- ✅ Metadata-Based Sorting: Extracts metadata from VERSION.NFO files (15 fields):
- Primary Genre, Secondary Genre, Language
- Published Year, Publisher, Developer
- Players, Control, PAL/NTSC
- Unique ID, Coding/Graphics/Music Credits, Comments
- ✅ Customizable Templates: Define your own folder structure using 15 field placeholders
- ✅ Path Sanitization: Handles special characters in metadata (e.g., "English \ Italian")
- ✅ Template Validation: Helpful error messages for typos
- ✅ Smart Disk File Handling: Automatically detects and renames disk files (D64, D71, D81, G64, X64, T64, TAP, PRG, P00, LNX)
- ✅ Duplicate Handling: Automatic versioning for duplicate game names
- ✅ Error Reporting: Detailed logging of skipped games and errors
- ✅ English-Only Filter: Optional filtering to process only English-language games
- ✅ Publisher Simplification: Strip publisher subtitles (e.g., "Publisher - Subsidiary" → "Publisher")
- ✅ Keep Zipped Option: Copy/move zip files without extracting (optional)
- 🧪 Interactive interface with game preview
- 🧪 Progress tracking and cancellation
- 🧪 Metadata caching (may have bugs)
- 🧪 Filtering by genre/language/publisher
- 🧪 Selective organization with checkboxes
- Python 3.7+
- No external dependencies required (uses only Python standard library)
- GameBase64 games library installed on your system
- Clone or download this repository
- Ensure Python 3.7+ is installed on your system
- Have your GameBase64 games library ready (this tool organizes games from it)
- Run:
python gb64_reorganizer.py(CLI) orpython gb64_gui.py(GUI)
Download the pre-built executable (GB64GameOrganizer.exe) from the Releases page and run it directly—no Python installation needed!
If you want to build your own executable:
- Install PyInstaller:
pip install pyinstaller - Run the build script:
./build.ps1(Windows PowerShell) - The executable will be created in the
dist/folder
Or build manually:
pyinstaller --onefile --name GB64GameOrganizer gb64_reorganizer.pyInteractive mode (prompts for all options):
python gb64_reorganizer.pyQuick mode (with basic arguments):
python gb64_reorganizer.py "C:\Source" "C:\Dest"With all options:
python gb64_reorganizer.py "C:\Source" "C:\Dest" --template "{publisher}/{name}" --english-only --collapse-publishers --keep-zippedpython gb64_gui.pySimply double-click GB64GameOrganizer.exe in the dist/ folder.
--template PATH_TEMPLATE
Customize the folder structure (default: {primary_genre}/{secondary_genre}/{language}/{name})
--english-only
Only process games with 'English' in the language field
--include-no-text
When using --english-only, also include games with '(No Text)' language
--collapse-publishers
Simplify publisher names by removing text after ' - ' separator
Example: "Activision - Games" becomes "Activision"
--keep-zipped
Copy/move zip files without extracting contents
Useful for creating backups or archives
If no arguments are provided, the program enters interactive mode and will ask you:
- Source Directory: Path to your GameBase64 games folder (containing zipped games)
- Destination Directory: Path where organized games will be placed
- Folder Template: Customize how games are organized (or press Enter for default)
- English-Only Filter: Process only games with English language
- Include (No Text) Filter: When English-only is enabled, include games with no text
- Publisher Collapse: Simplify publisher names
- Keep Zipped: Keep files as zip archives instead of extracting
Use any of these placeholders in your custom template:
{name} - Game name
{primary_genre} - Main game genre
{secondary_genre} - Sub-genre
{language} - Game language
{published_year} - Release year
{publisher} - Publisher name
{developer} - Developer name
{players} - Player count
{control} - Control type
{pal_ntsc} - Video format (PAL/NTSC)
{unique_id} - GameBase unique ID
{coding} - Coding credits
{graphics} - Graphics credits
{music} - Music credits
{comment} - Comments/notes
Example Templates:
{primary_genre}/{secondary_genre}/{language}/{name}(default - by genre and language){published_year}/{primary_genre}/{name}(organize by release year then genre){publisher}/{name}(organize by publisher){unique_id}/{name}(organize by GameBase ID){language}/{publisher}/{primary_genre}/{name}(organize by language, then publisher, then genre){name}(flat structure with just game names)
If your GameBase64 library is located at D:\GameBase64\Games\, you would enter that as your source directory.
After running the organizer, your games will be organized like this:
destination_directory/
├── Action/
│ ├── Shooter/
│ │ ├── English/
│ │ │ ├── Galaxian/
│ │ │ └── Pac-Man/
│ │ └── German/
│ │ └── Space Invaders/
├── Adventure/
│ ├── Text Adventure/
│ │ └── English/
│ │ └── Zork/
└── Puzzle/
├── Match-3/
│ └── English/
│ └── Tetris/
The organizer extracts metadata from VERSION.NFO files embedded in each game zip file, including:
- Game Name: The title of the game
- Genres: Primary and secondary genre categories
- Language: Text language of the game
- Year: Published year
- Publisher: Publishing company
- Developer: Development studio
- Credits: Coding, graphics, and music contributors
- Technical Info: Player count, control type, PAL/NTSC format
If VERSION.NFO metadata is missing or incomplete, the organizer uses the zip filename as a fallback.
- Zip Extraction: Extracts each zip file to a temporary directory
- Metadata Extraction: Reads VERSION.NFO file for game information
- Organization: Creates folder hierarchy based on your template
- Disk File Handling: Renames game disk files with standardized naming
- Cleanup: Removes temporary files after processing
- Games are copied to the destination directory by default (originals are preserved)
- Zero external Python dependencies (uses only standard library)
- Invalid Windows filename characters are automatically removed
- Duplicate game names are automatically versioned (e.g.,
GameName [v2],GameName [v3]) - Processing progress is displayed in the console with status indicators (✓ success, ✗ error, ⚠ warning)
- Full organization log is saved to
organization_log.txtin the destination directory - Temporary extraction folders are automatically cleaned up
- All operations are safe and non-destructive to source zip files
python gb64_reorganizer.py "D:\GameBase64\Games" "D:\Organized Games" --template "{published_year}/{primary_genre}/{name}"python gb64_reorganizer.py "D:\GameBase64\Games" "D:\Organized Games" --template "{publisher}/{language}/{name}" --english-only --collapse-publisherspython gb64_reorganizer.py "D:\GameBase64\Games" "D:\Archived Games" --template "{language}/{primary_genre}/{name}" --keep-zippedpython gb64_reorganizer.py "D:\GameBase64\Games" "D:\Simple" --template "{name}" --collapse-publishers