Home

Awesome

GalaxyGenericImporterPlugin

Plug-in for GOG Galaxy supporting programmatic importation of multiple platform game libraries. Allows for the generic definition of files to be added using user definable regular expressions. Programmatically imports games from predefined folders while allowing for others to be configured by users. Advanced users can also configure how games are are executed and populated into galaxy by editing the configurable regular expressions. The provides advantages over manual importation when importing many (hundreds) of programs into galaxy, assigning them tags, removing them and adding in unknown games with human readable names.

<img width="894" alt="galaxy_imported" src="https://user-images.githubusercontent.com/972757/83471895-e3d74c00-a453-11ea-8ea9-ac8f0a9c4af0.PNG">

Known issues

Installation

Ensure that galaxy is completely exited, including from the system tray, before you install the plugin. The plug-in will need to be placed in %localappdata%\GOG.com\Galaxy\plugins\installed\ as importer_97543122-7785-4444-2254-711233556699 . The easiest version to install is the latest version under releases with all of the libraries pre installed and can be unzipped into the installation directory. This Youtube video shows installation using default directories for the plugin software.

<img alt="installation directory with plugins installed" src="https://user-images.githubusercontent.com/972757/119213521-981b1980-ba8d-11eb-9a13-e8a8a2438c14.png">

Updating

If you are updating from a previous version and you wish to keep your game data, ensure that you copy game_cache and game_cache-times files to the updated installation. If you have made any configuration changes that you wish to preserve, ensure to copy the systems.json and config.cfg files to the updated installation. Once you have finished updating the unzipped folder with these old files make sure to completely remove the existing files from the plugin directory before moving the newly uncompressed version into the plugins folder and restarting galaxy.

Default directories

If the configuration is not changed to reflect your system, then the following is used by default. Your personal documents\games\ folder will by default be used to house the folders for your systems which will be something like C:\Users\andyn\Documents\Games\Dreamcast depending on your user name. See the PSP example for how to have multiple emulators for the same system for different folders and kinds of images.

PlatformDefault Emulator LocationDefault Folders
Sega Dreamcast%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\Dreamcast\Game Name\disc.gdi
%USERPROFILE%\Documents\Games\Dreamcast
Z:\data\Software\games\roms\Dreamcast
Game Boy Advance%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\GBA
%USERPROFILE%\Documents\Games\GBA
Z:\data\Software\games\roms\GBA
Z:\data\Software\games\roms\GBC
Z:\data\Software\games\roms\GB
Game Boy Color%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\GBC
F:\Software\games\roms\GB
%USERPROFILE%\Documents\Games\GBC
%USERPROFILE%\Documents\Games\GB
Gamecube%USERPROFILE%\Dolphin-x64\Dolphin.exeF:\Software\games\roms\GameCube
%USERPROFILE%\Documents\Games\GameCube
Z:\data\Software\games\roms\GameCube
Sega Genesis%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\Genesis
%USERPROFILE%\Documents\Games\Genesis
Z:\data\Software\games\roms\Genesis
Sega Master System%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\Master System
Nintendo 64%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\N64
%USERPROFILE%\Documents\Games\N64
Z:\data\Software\games\roms\N64
Nintendo DS%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\nds
%USERPROFILE%\Documents\Games\nds
Z:\data\Software\games\roms\nds
Nintendo Entertainment System%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\nes
%USERPROFILE%\Documents\Games\NES
Z:\data\Software\games\roms\nes\roms
Playstation 2C:\Program Files (x86)\PCSX2\pcsx2.exeF:\Software\games\roms\PS2
%USERPROFILE%\Documents\Games\PS2
Z:\data\Software\games\roms\PS2
Playstation 3%USERPROFILE%\rpcs3-v0.0.13-11287-cab4c78b_win64\rpcs3.exeF:\Software\games\roms\PS3\out
%USERPROFILE%\Documents\Games\PS3
Z:\data\Software\games\roms\PS3\out
Playstation PortableC:\Program Files\PPSSPP\PPSSPPWindows64.exeF:\Software\games\roms\psp
%USERPROFILE%\Documents\Games\psp
Z:\data\Software\games\roms\psp
C:\Program Files\PPSSPP\ppsspp_win\PPSSPPWindows64.exeE:\roms\psp\Digital Downloads
D:\roms\psp\Digital Downloads
%USERPROFILE%\Documents\Games\psp\Digital Downloads
Playstation 1%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\PS1
%USERPROFILE%\Documents\Games\PS1
Z:\data\Software\games\roms\PS1\isos
Z:\data\Software\games\roms\PS1\PSX Digital
Z:\data\Software\games\roms\PS1\multi-disk
Super Nintendo Entertainment System%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\SNES
%USERPROFILE%\Documents\Games\SNES
Z:\data\Software\games\roms\SNES
Wii%USERPROFILE%\Dolphin-x64\Dolphin.exeF:\Software\games\roms\Wii
%USERPROFILE%\Documents\Games\Wii
Z:\data\Software\games\roms\Wii
%USERPROFILE%\Documents\Games\Wii\Digital
Z:\data\Software\games\roms\Wii\Digital
XBOX%USERPROFILE%\CxbxReloaded-Release-VS2019\cxbx.exeF:\Software\games\roms\xbox\games
%USERPROFILE%\Documents\Games\xbox
Z:\data\Software\games\roms\xbox\games
Wii U%USERPROFILE%\cemu_1.22.0\Cemu.exeF:\Software\games\roms\wii u\converted
%USERPROFILE%\Documents\Games\wiiu
Z:\data\Software\games\roms\wii u\converted
Arcade%USERPROFILE%\mame0226b_64bit\mame64.exeF:\Software\games\roms\arcade
%USERPROFILE%\Documents\Games\arcade
Z:\data\Software\games\roms\arcade
AmazonG:\Amazon Games\Library
C:\Amazon Games\Library
%appdata%\Microsoft\Windows\Start Menu\Programs\Amazon Games
DOSC:\Program Files (x86)\DOSBox-0.74-3\DOSBox.exe%USERPROFILE%\Documents\Games\DOS
F:\Software\games\roms\dos
Z:\data\Software\games\roms\dos
mods%USERPROFILE%\Documents\Games\mods
Xbox 360%USERPROFILE%\xenia_master\xenia.exe%USERPROFILE%\Documents\Games\xbox 360
F:\Software\games\roms\xbox 360\games
Z:\data\Software\games\roms\xbox 360\games
Nintendo 3DS%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\3ds\roms
%USERPROFILE%\Documents\Games\3ds
Z:\data\Software\games\roms\3ds\roms
Vita%USERPROFILE%\Downloads\Vita3K-master-v4761-2020-07-11-3b714115_win64\Vita3K.exe%USERPROFILE%\Documents\Games\vita
F:\Software\games\roms\vita\roms
Z:\data\Software\games\roms\vita\roms
Mattel Intellivision%APPDATA%\RetroArch\retroarch.exeF:\Software\games\roms\Intellivision
%USERPROFILE%\Documents\Games\intellivision
Z:\data\Software\games\roms\Intellivision
NeoGeo%APPDATA%\RetroArch\retroarch.exeZ:\data\Software\games\roms\neogeo
%USERPROFILE%\Documents\Games\neogeo
Amiga%APPDATA%\RetroArch\retroarch.exeZ:\data\Software\games\roms\Amiga
%USERPROFILE%\Documents\Games\Amiga

Sega Dreamcast

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the flycast_libretro.dll core.

roms

F:\Software\games\roms\Dreamcast\Game Name\disc.gdi
%USERPROFILE%\Documents\Games\Dreamcast
Z:\data\Software\games\roms\Dreamcast

By default the folders in F:\Software\games\roms\Dreamcast will be populated as your game names. Additionally folders in your documents\games\Dreamcast folder will also be populated.

Game Boy Advance

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the mgba_libretro.dll core.

roms

F:\Software\games\roms\GBA
%USERPROFILE%\Documents\Games\GBA
Z:\data\Software\games\roms\GBA

Game Boy Color

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the gambatte_libretro.dll core.

roms

F:\Software\games\roms\GBC
F:\Software\games\roms\GB
%USERPROFILE%\Documents\Games\GBC
%USERPROFILE%\Documents\Games\GB
Z:\data\Software\games\roms\GBC |
Z:\data\Software\games\roms\GB

Gamecube

emulator

%USERPROFILE%\Dolphin-x64\Dolphin.exe

This will end up being something like C:\Users\andyn\Dolphin-x64\Dolphin.exe.

roms

F:\Software\games\roms\GameCube
%USERPROFILE%\Documents\Games\GameCube
Z:\data\Software\games\roms\GameCube

Sega Genesis

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the genesis_plus_gx_libretro.dll core.

roms

F:\Software\games\roms\Genesis
%USERPROFILE%\Documents\Games\Genesis
Z:\data\Software\games\roms\Genesis

Sega Master System

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the blastem_libretro.dll core.

roms

Z:\data\Software\games\roms\Master System

Nintendo 64

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the mupen64plus_next_libretro.dll core.

roms

F:\Software\games\roms\N64
%USERPROFILE%\Documents\Games\N64
Z:\data\Software\games\roms\N64

Nintendo DS

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the desmume_libretro.dll core.

roms

F:\Software\games\roms\nds
%USERPROFILE%\Documents\Games\nds

Nintendo Entertainment System

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the nestopia_libretro.dll core.

roms

F:\Software\games\roms\nes
%USERPROFILE%\Documents\Games\NES
Z:\data\Software\games\roms\nes\roms

Playstation 2

emulator

C:\Program Files (x86)\PCSX2\pcsx2.exe

roms

F:\Software\games\roms\PS2
%USERPROFILE%\Documents\Games\PS2
Z:\data\Software\games\roms\PS2

Playstation 3

emulator

%USERPROFILE%\rpcs3-v0.0.7-9236-db4041e0_win64\rpcs3.exe

This will end up being something like C:\Users\andyn\rpcs3-v0.0.13-11287-cab4c78b_win64\rpcs3.exe.

roms

F:\Software\games\roms\PS3\out
%USERPROFILE%\Documents\Games\PS3
Z:\data\Software\games\roms\PS3\out

By default the folders in F:\Software\games\roms\PS3\out will be populated as your game names.

Playstation Portable

This system is setup by default as an example of having two different emulators or versions of one to launch different programs in separate folders.

emulator

C:\Program Files\PPSSPP\ppsspp_win\PPSSPPWindows64.exe

This first instance is setup to load isos of disks. This one is setup for running digital downloaded PBP from the Playstation store.

roms

F:\Software\games\roms\psp
%USERPROFILE%\Documents\Games\psp
Z:\data\Software\games\roms\psp
E:\roms\psp\Digital Downloads
D:\roms\psp\Digital Downloads
%USERPROFILE%\Documents\Games\psp\Digital Downloads

The first three are setup for isos while the last three are for PBPs. By default the folders in %USERPROFILE%\Documents\Games\psp\Digital Downloads will be populated as your game names.

Playstation 1

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the pcsx_rearmed_libretro.dll core. Note the two examples for cue and toc/iso and m3u (for multidisk programs), as they can all be combined if desired.

roms

F:\Software\games\roms\PS1
%USERPROFILE%\Documents\Games\PS1
Z:\data\Software\games\roms\PS1\multi-disk
Z:\data\Software\games\roms\PS1\isos
Z:\data\Software\games\roms\PS1\PSX Digital

Super Nintendo Entertainment System

emulator

%APPDATA%\RetroArch

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the snes9x_libretro.dll core.

roms

F:\Software\games\roms\SNES
%USERPROFILE%\Documents\Games\SNES
Z:\data\Software\games\roms\SNES

Wii

emulator

%USERPROFILE%\Dolphin-x64\Dolphin.exe

This will end up being something like C:\Users\andyn\Dolphin-x64\Dolphin.exe.

roms

F:\Software\games\roms\Wii
%USERPROFILE%\Documents\Games\Wii
Z:\data\Software\games\roms\Wii
%USERPROFILE%\Documents\Games\Wii\\Digital
Z:\data\Software\games\roms\Wii\\Digital

Also Note that the digital folders will look for wad files by default.

XBOX

emulator

%USERPROFILE%\CxbxReloaded-Release-VS2019\cxbx.exe

This will end up being something like C:\Users\andyn\CxbxReloaded-Release-VS2019\cxbx.exe.

roms

F:\Software\games\roms\xbox\games
%USERPROFILE%\Documents\Games\xbox
Z:\data\Software\games\roms\xbox\games

By default the folders in F:\Software\games\roms\xbox\games will be populated as your game names.

Wii U

emulator

%USERPROFILE%\cemu_1.22.0\Cemu.exe

This will end up being something like C:\Users\andyn\cemu_1.22.0\Cemu.exe.

roms

F:\Software\games\roms\wii u\converted
%USERPROFILE%\Documents\Games\wiiu
Z:\data\Software\games\roms\wii u\converted

By default the folders in F:\Software\games\roms\wii u\converted will be populated as your game names.

Arcade

emulator

%USERPROFILE%\mame0226b_64bit\mame64.exe

This will end up being something like C:\Users\andyn\mame0226b_64bit\mame64.exe.

roms

F:\Software\games\roms\arcade
%USERPROFILE%\Documents\Games\arcade
Z:\data\Software\games\roms\arcade

By default the folders in F:\Software\games\roms\arcade will be populated as your game names.

Amazon

game library folders

G:\Amazon Games\Library
C:\Amazon Games\Library

This will by default populate any exe files found in the root folder of each game. See the second method for the ease of use solution.

%appdata%\\Microsoft\\Windows\\Start Menu\\Programs\\Amazon Games

This will by default use the links in the start menu created by amazon games for the applications. Is is recommended to just use this version since it is easier to create and manage.

Dos

emulator

C:\Program Files (x86)\DOSBox-0.74-3\DOSBox.exe

roms

%USERPROFILE%\Documents\Games\DOS
F:\Software\games\roms\dos
Z:\data\Software\games\roms\dos

By default the folders in F:\Software\games\roms\dos will be populated as your game names.

configuration starts

%USERPROFILE%\Documents\Games\DOS\configurations
F:\Software\games\roms\dos\configurations    
Z:\data\Software\games\roms\dos\configurations

mods

programs

%USERPROFILE%\Documents\Games\mods

This will by default populate batch and link files into galaxy for directly launching programs such as mods. Additionally this folder by default supports launching BlueStacks application links.

<img alt="Mods default folder with a mod and a blustax link" src="https://user-images.githubusercontent.com/972757/119213717-4d9a9c80-ba8f-11eb-8f87-e6be9dc497fb.png">

Xbox 360

emulator

%USERPROFILE%\xenia_master\xenia.exe

roms

%USERPROFILE%\Documents\Games\xbox 360
F:\Software\games\roms\xbox 360\games
Z:\data\Software\games\roms\xbox 360\games

Nintendo 3DS

emulator

%APPDATA%\RetroArch\retroarch.exe

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the citra_libretro.dll core.

roms

F:\Software\games\roms\3ds\roms
%USERPROFILE%\Documents\Games\3ds
Z:\data\Software\games\roms\3ds\roms

Vita

emulator

%USERPROFILE%\vita3k-windows-latest\Release\Vita3K.exe

roms

%USERPROFILE%\Documents\Games\vita
F:\Software\games\roms\vita\roms
Z:\data\Software\games\roms\vita\roms

By default the folders in F:\Software\games\roms\vita\roms will be populated as your game names.

Mattel Intellivision

emulator

%APPDATA%\RetroArch

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the freeintv_libretro.dll core.

roms

F:\Software\games\roms\Intellivision
%USERPROFILE%\Documents\Games\intellivision
Z:\data\Software\games\roms\Intellivision

NeoGeo

emulator

 %APPDATA%\RetroArch\retroarch.exe

roms

Z:\data\Software\games\roms\neogeo
%USERPROFILE%\Documents\Games\neogeo

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the mame_libretro.dll core. The folder names will be populated as the game names and the zip files should follow the Mame conventions.

Amiga

emulator

 %APPDATA%\RetroArch\retroarch.exe

roms

Z:\data\Software\games\roms\Amiga
%USERPROFILE%\Documents\Games\Amiga

This will end up being something like C:\Users\andyn\AppData\Roaming\RetroArch\retroarch.exe. And use the puae_libretro.dll core. The folder names will be populated as the game names.

Owned

%USERPROFILE%\Documents\Games\Owned

By default this will populate games as ones that you own but cannot run on this device or wish to have marked as installed.

PS4

%USERPROFILE%\Documents\Games\ps4
Z:\data\Software\games\roms\ps4

By default this will populate games as ones that you own, using the folder names, but cannot run on this device or wish to have marked as installed.

Configuration

Configuration for execution, selection and location of files is located in the systems.json file. See the included for an example and for what is used by default if not changed. You will need to change this. Any platform(s) you do not need can be safely removed.

<img alt="Main configuration file for program execution" src="https://user-images.githubusercontent.com/972757/147400204-ec083ae6-a2fe-4b67-ae5f-52d15cdbfb62.png">

name

The different platforms names are saved as tags, so you will want to manually import them to use these filters in GOG Galaxy.

execution

The escaped execution command to send to the operating system. Allows for expansion of the following variables.

%ROM_RAW%

The full filename of the software. Note that if this used without any leading executable, this can be used as the executable; see the mods section of the systems.json file for an example.

%ROM_NAME%

The filename without the path and extension.

%ROM_DIR%

The full path to the software.

path_regex

The regular expression to use to allow for the selection of the software. For most platforms this is just an escaped version of the directory where the games are stored.

filename_regex

The regular expression to use to select valid files.

tags

Optional: Additional tags to add to files.

game_name_regex

The regular expression to use to select the name portion of the file. for example, ".*[\\\\](.+)[\\\\].*" would use the last folder name as the game name.

game_name_regex_group

The regular expression group to use from the game_name_regex match.

gameShouldBeInstalled

This allows programs to be listed but not marked as installed when set to false.

hashContent

This specifies that the game id sent to galaxy should be using a hash of the content of the data instead of the default based on name and path. Currently this requires the entire application to be loaded into ram at once for the hashing. This is planned to be expanded to allow for further identification algorithms to be specified in the future.

Example configuration entry

The following is an example of the configuration of a single entry for a system. These objects should be enclosed in an array. Again see the example file for how this should look all together.

   {
        "name" : "dreamcast",
        "execution" : "\"%APPDATA%\\RetroArch\\retroarch.exe\" -f -L \"%APPDATA%\\RetroArch\\cores\\flycast_libretro.dll\" \"%ROM_RAW%\"",
        "path_regex" : ["%USERPROFILE%\\Documents\\Games\\Dreamcast","F:\\Software\\games\\roms\\Dreamcast"],
        "tags" : ["retroarch"],
        "game_name_regex" : ".*[\\\\](.+?)([ ]*[\\(\\[].*[\\)\\]])*([.].*)*[\\\\](disc)[.]gdi",
        "game_name_regex_group" : 1,
        "system_rom_name_regex_group" : 4,
        "filename_regex" : ["disc[.]gdi"],
        "gameShouldBeInstalled" : true,
        "hashContent" : false
    }

Development notes

Galaxy plug-in specific dependencies:

Use pip to install the dependencies to your local development copy (windows example below)

py -3.7-32 -m pip install  -r requirements/requirements_dev.txt --target .

Run coverage tests

./coverage.bat

Python package CodeQL