Exemplo n.º 1
0
    def generate(self, system, rom, playersControllers, gameResolution):
        if not path.isdir(batoceraFiles.BIOS + "/cemu"):
            os.mkdir(batoceraFiles.BIOS + "/cemu")
        if not path.isdir(batoceraFiles.CONF + "/cemu"):
            os.mkdir(batoceraFiles.CONF + "/cemu")

        for folder in ["shaderCache", "controllerProfiles", "gameProfiles", "graphicPacks"]:
            if not path.isdir(batoceraFiles.CONF + "/cemu/" + folder):
                os.mkdir(batoceraFiles.CONF + "/cemu/" + folder)

        if not path.isdir(batoceraFiles.SAVES + "/cemu"):
            os.mkdir(batoceraFiles.SAVES + "/cemu")

        CemuGenerator.CemuConfig(batoceraFiles.CONF + "/cemu/settings.xml", system)
        # copy the file from where cemu reads it
        copyfile(batoceraFiles.CONF + "/cemu/settings.xml", "/usr/cemu/settings.xml")

        cemuControllers.generateControllerConfig(system, playersControllers, rom)

        commandArray = ["/usr/wine/lutris/bin/wine64", "/usr/cemu/Cemu.exe", "-g", "z:" + rom, "-m", "z:" + batoceraFiles.SAVES + "/cemu", "-f"]
        return Command.Command(
            array=commandArray,
            env={
                "WINEPREFIX": batoceraFiles.SAVES + "/cemu",
                "vblank_mode": "0",
                "mesa_glthread": "true",
                "SDL_GAMECONTROLLERCONFIG": controllersConfig.generateSdlGameControllerConfig(playersControllers),
                "WINEDLLOVERRIDES": "mscoree=;mshtml=;dbghelp.dll=n,b",
                "__GL_THREADED_OPTIMIZATIONS": "1"
            })
Exemplo n.º 2
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["SDLPoP"]

        # create sdlpop config directory
        if not os.path.exists(batoceraFiles.sdlpopConfigDir):
            os.makedirs(batoceraFiles.sdlpopConfigDir)
        if not os.path.exists(batoceraFiles.sdlpopSrcCfg):
            shutil.copyfile('/usr/share/sdlpop/cfg/SDLPoP.cfg', batoceraFiles.sdlpopSrcCfg)
        if not os.path.exists(batoceraFiles.sdlpopSrcIni):
            shutil.copyfile('/usr/share/sdlpop/cfg/SDLPoP.ini', batoceraFiles.sdlpopSrcIni)       
        # symbolic link cfg files
        if not os.path.exists(batoceraFiles.sdlpopDestCfg):
            os.symlink(batoceraFiles.sdlpopSrcCfg, batoceraFiles.sdlpopDestCfg)
        if not os.path.exists(batoceraFiles.sdlpopDestIni):
            os.symlink(batoceraFiles.sdlpopSrcIni, batoceraFiles.sdlpopDestIni)
        # symbolic link screenshot folder too
        if not os.path.exists('/userdata/screenshots/sdlpop'):
            os.makedirs('/userdata/screenshots/sdlpop')
            os.symlink('/userdata/screenshots/sdlpop', '/usr/share/sdlpop/screenshots', target_is_directory = True)
        
        # pad number
        nplayer = 1
        for playercontroller, pad in sorted(playersControllers.items()):
            if nplayer == 1:
                commandArray.append("joynum={}".format(pad.index))
            nplayer += 1

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG': controllersConfig.generateSdlGameControllerConfig(playersControllers)
        })
Exemplo n.º 3
0
    def generate(self, system, rom, playersControllers, gameResolution):
        # Find rom path
        if os.path.isdir(rom):
          # rom is a directory: must contains a <game name>.scummvm file
          romPath = rom
          romFile = glob.glob(romPath + "/*.scummvm")[0]
          romName = os.path.splitext(os.path.basename(romFile))[0]
        else:
          # rom is a file: split in directory and file name
          romPath = os.path.dirname(rom)
          # Get rom name without extension
          romName = os.path.splitext(os.path.basename(rom))[0]

        # pad number
        nplayer = 1
        id = 0
        for playercontroller, pad in sorted(playersControllers.items()):
            if nplayer == 1:
                id=pad.index
            nplayer += 1

        commandArray = [batoceraFiles.batoceraBins[system.config['emulator']],
                        "-f",
                        "--joystick={}".format(id),
                        "--screenshotspath="+batoceraFiles.screenshotsDir,
                        "--extrapath=/usr/share/scummvm",
                        "--savepath="+batoceraFiles.scummvmSaves,
                        "--path=""{}""".format(romPath)]
        commandArray.append("""{}""".format(romName))

        return Command.Command(array=commandArray,env={
            "SDL_GAMECONTROLLERCONFIG": controllersConfig.generateSdlGameControllerConfig(playersControllers)
        })
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["doomretro"]

        if (rom.__contains__(".uwad")):
            f = open(rom)
            content = f.readlines()
            for line in content:
                if 'IWAD=/' in line:
                    commandArray.append("-iwad")
                    commandArray.append(
                        line.replace("IWAD=", "").replace("\n", ""))
                elif 'PWAD=/' in line:
                    commandArray.append("-file")
                    commandArray.append(
                        line.replace("PWAD=", "").replace("\n", ""))

        else:
            commandArray.append("-iwad")
            commandArray.append(rom)

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 5
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = [
            "quakespasm", "-basedir", "/userdata/roms/tyrquake", "-sndspeed",
            "44100"
        ]

        if (rom.lower().__contains__("hipnotic")):
            commandArray = [
                "quakespasm", "-basedir", "/userdata/roms/tyrquake",
                "-sndspeed", "44100", "-hipnotic"
            ]

        if (rom.lower().__contains__("rogue")):
            commandArray = [
                "quakespasm", "-basedir", "/userdata/roms/tyrquake",
                "-sndspeed", "44100", "-rogue"
            ]

        if (rom.lower().__contains__("dopa")):
            commandArray = [
                "quakespasm", "-basedir", "/userdata/roms/tyrquake",
                "-sndspeed", "44100", "-game", "dopa"
            ]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 6
0
    def generate(self, system, rom, playersControllers, gameResolution):

        settings = ConfigParser.ConfigParser()
        # To prevent ConfigParser from converting to lower case
        settings.optionxform = str
        settings_path = rom + "/data/mugen.cfg"
        if os.path.exists(settings_path):
            MugenGenerator.cleanMugenCfg(settings_path)
            settings.read(settings_path)

        if not settings.has_section("Video"):
            settings.add_section("Video")
        settings.set("Video", "FullScreen", "1")
        settings.set("Video", "Width",  gameResolution["width"])
        settings.set("Video", "Height", gameResolution["height"])

        if not settings.has_section("Config"):
            settings.add_section("Config")
        settings.set("Config", "GameWidth",  gameResolution["width"])
        settings.set("Config", "GameHeight", gameResolution["height"])
        settings.set("Config", "Language", "en")

        # Save config
        if not os.path.exists(os.path.dirname(settings_path)):
            os.makedirs(os.path.dirname(settings_path))

        with open(settings_path, 'w') as configfile:
            settings.write(configfile)

        commandArray = ["batocera-wine", "mugen", "play", rom]
        return Command.Command(array=commandArray, env={ "SDL_GAMECONTROLLERCONFIG": controllersConfig.generateSdlGameControllerConfig(playersControllers) })
Exemplo n.º 7
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["OpenLara"]

        return Command.Command(
            array=commandArray,
            env={
                "SDL_GAMECONTROLLERCONFIG": controllersConfig.generateSdlGameControllerConfig(playersControllers)
            })
Exemplo n.º 8
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["RigelEngine", "/userdata/roms/nukem2"]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG': controllersConfig.generateSdlGameControllerConfig(playersControllers)
            })
Exemplo n.º 9
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["blues", "--datapath=/userdata/roms/blues"]

        return Command.Command(
            array=commandArray,
            env={
                "SDL_GAMECONTROLLERCONFIG": controllersConfig.generateSdlGameControllerConfig(playersControllers)
            })
Exemplo n.º 10
0
    def generate(self, system, rom, playersControllers, gameResolution):
        isAVX2 = checkAvx2()

        pcsx2ConfigDir = "/userdata/system/configs/PCSX2"

        # Config files
        configureReg(pcsx2ConfigDir)
        configureUI(pcsx2ConfigDir, batoceraFiles.BIOS, system.config,
                    gameResolution)
        configureVM(pcsx2ConfigDir, system)
        configureGFX(pcsx2ConfigDir, system)
        configureGFXdx(pcsx2ConfigDir, system)
        configureAudio(pcsx2ConfigDir)

        if isAVX2:
            commandArray = ["/usr/PCSX_AVX2/bin/PCSX2", rom]
        else:
            commandArray = ["/usr/PCSX/bin/PCSX2", rom]

        # Fullscreen
        commandArray.append("--fullscreen")

        # No GUI
        commandArray.append("--nogui")

        # Fullboot
        if system.isOptSet('fullboot') and system.config['fullboot'] == '0':
            eslog.debug("Fast Boot and skip BIOS")
        else:
            commandArray.append("--fullboot")

        # Arch
        arch = "x86"
        with open('/usr/share/batocera/batocera.arch', 'r') as content_file:
            arch = content_file.read()

        env = {}

        if isAVX2:
            env["LD_LIBRARY_PATH"] = "/usr/PCSX_AVX2/lib"
        else:
            env["LD_LIBRARY_PATH"] = "/usr/PCSX/lib"

        env["XDG_CONFIG_HOME"] = batoceraFiles.CONF
        env["SDL_GAMECONTROLLERCONFIG"] = controllersConfig.generateSdlGameControllerConfig(
            playersControllers)

        env["SDL_PADSORDERCONFIG"] = controllersConfig.generateSdlGameControllerPadsOrderConfig(
            playersControllers)

        if arch == "x86":
            env["LD_LIBRARY_PATH"] = "/lib32"
            env["LIBGL_DRIVERS_PATH"] = "/lib32/dri"
            # hum pw 0.2 and 0.3 are hardcoded, not nice
            env["SPA_PLUGIN_DIR"] = "/usr/lib/spa-0.2:/lib32/spa-0.2"
            env["PIPEWIRE_MODULE_DIR"] = "/usr/lib/pipewire-0.3:/lib32/pipewire-0.3"

        return Command.Command(array=commandArray, env=env)
Exemplo n.º 11
0
 def generate(self, system, rom, playersControllers, gameResolution):
     commandArray = ["simcoupe", "autoboot", "-disk1", rom]
     return Command.Command(
         array=commandArray,
         env={
             'SDL_GAMECONTROLLERCONFIG':
             controllersConfig.generateSdlGameControllerConfig(
                 playersControllers)
         })
Exemplo n.º 12
0
    def generate(self, system, rom, playersControllers, gameResolution):
        gamedir = rom.replace('openjazz.game', '')
        commandArray = ["OpenJazz", gamedir]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG': controllersConfig.generateSdlGameControllerConfig(playersControllers)
            })
Exemplo n.º 13
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["rednukem", "-j", os.path.dirname(os.path.abspath(rom)), "-g", rom]
        os.chdir(os.path.dirname(os.path.abspath(rom)))

        return Command.Command(
            array=commandArray,
            env={
                "SDL_GAMECONTROLLERCONFIG": controllersConfig.generateSdlGameControllerConfig(playersControllers)
            })
Exemplo n.º 14
0
 def generate(self, system, rom, playersControllers, gameResolution):
     commandArray = ["hatari", "--fullscreen"]
     return Command.Command(
         array=commandArray,
         env={
             'SDL_GAMECONTROLLERCONFIG':
             controllersConfig.generateSdlGameControllerConfig(
                 playersControllers)
         })
Exemplo n.º 15
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["opentyrian", "-t" "/usr/share/opentyrian/data/", "-j"]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 16
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["abuse", "-datadir", "/usr/share/abuse"]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 17
0
    def generate(self, system, rom, playersControllers, gameResolution):
        os.chdir("/usr/share/hcl")
        commandArray = ["hcl"]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 18
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = ["ioquake3", "+set", "cl_renderer", "vulkan"]
        os.chdir(os.path.dirname(os.path.abspath(rom)))

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 19
0
    def generate(self, system, rom, playersControllers, gameResolution):
        commandArray = [
            "ionfury", "-game_dir", "/userdata/roms/ionfury", "-g", rom
        ]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 20
0
    def generate(self, system, rom, playersControllers, gameResolution):
        isAVX2 = checkAvx2()
        sseLib = checkSseLib(isAVX2)

        # Config files
        configureReg(batoceraFiles.pcsx2ConfigDir)
        configureUI(batoceraFiles.pcsx2ConfigDir, batoceraFiles.BIOS,
                    system.config, gameResolution)
        configureVM(batoceraFiles.pcsx2ConfigDir, system)
        configureGFX(batoceraFiles.pcsx2ConfigDir, system)
        configureAudio(batoceraFiles.pcsx2ConfigDir)

        if isAVX2:
            commandArray = [batoceraFiles.batoceraBins['pcsx2_avx2'], rom]
        else:
            commandArray = [batoceraFiles.batoceraBins['pcsx2'], rom]

        # Fullscreen
        commandArray.append("--fullscreen")

        # No GUI
        commandArray.append("--nogui")

        # Fullboot
        if system.isOptSet('fullboot') and system.config['fullboot'] == '0':
            print("Fast Boot and skip BIOS")
        else:
            commandArray.append("--fullboot")

        # Plugins
        real_pluginsDir = batoceraFiles.pcsx2PluginsDir
        if isAVX2:
            real_pluginsDir = batoceraFiles.pcsx2Avx2PluginsDir
        commandArray.append("--gs=" + real_pluginsDir + "/" + sseLib)

        # Arch
        arch = "x86"
        with open('/usr/share/batocera/batocera.arch', 'r') as content_file:
            arch = content_file.read()

        env = {}
        env["XDG_CONFIG_HOME"] = batoceraFiles.CONF
        env["SDL_GAMECONTROLLERCONFIG"] = controllersConfig.generateSdlGameControllerConfig(
            playersControllers)

        env["SDL_PADSORDERCONFIG"] = controllersConfig.generateSdlGameControllerPadsOrderConfig(
            playersControllers)

        if arch == "x86":
            env["LD_LIBRARY_PATH"] = "/lib32"
            env["LIBGL_DRIVERS_PATH"] = "/lib32/dri"

        return Command.Command(array=commandArray, env=env)
Exemplo n.º 21
0
 def generate(self, system, rom, playersControllers, gameResolution):
     commandArray = [
         "solarus-run", "-fullscreen=yes", "-cursor-visible=no",
         "-lua-console=no", rom
     ]
     return Command.Command(
         array=commandArray,
         env={
             'SDL_GAMECONTROLLERCONFIG':
             controllersConfig.generateSdlGameControllerConfig(
                 playersControllers)
         })
Exemplo n.º 22
0
 def generate(self, system, rom, playersControllers, gameResolution):
     commandArray = ["devilutionx", "--data-dir", "/userdata/roms/devilutionx",
                     "--config-dir", "/userdata/system/configs/devilutionx",
                     "--save-dir", "/userdata/saves/devilutionx"]
     if not rom.endswith('hellfire.mpq'):
         commandArray.append('--diablo')
     if system.isOptSet('showFPS') and system.getOptBoolean('showFPS') == True:
         commandArray.append("-f")
     return Command.Command(
         array=commandArray,
         env={
             'SDL_GAMECONTROLLERCONFIG': controllersConfig.generateSdlGameControllerConfig(playersControllers)
         })
    def generate(self, system, rom, playersControllers, gameResolution):
        if not os.path.exists(BIN_PATH):
            eslog.error(
                "Lexaloffle official pico-8 binary not found at {}".format(
                    BIN_PATH))
            return -1
        if not os.access(BIN_PATH, os.X_OK):
            eslog.error("File {} is not set as executable".format(BIN_PATH))
            return -1

        # the command to run
        commandArray = [BIN_PATH]
        commandArray.extend(["-desktop",
                             "/userdata/screenshots"])  # screenshots
        commandArray.extend(["-windowed", "0"])  # full screen
        # Display FPS
        if system.config['showFPS'] == 'true':
            commandArray.extend(["-show_fps", "1"])
        else:
            commandArray.extend(["-show_fps", "0"])

        basename = os.path.basename(rom)
        rombase, romext = os.path.splitext(basename)

        # .m3u support for multi-cart pico-8
        if (romext.lower() == ".m3u"):
            with open(rom, "r") as fpin:
                lines = fpin.readlines()
            fullpath = os.path.dirname(
                os.path.abspath(rom)) + '/' + lines[0].strip()
            localpath, localrom = os.path.split(fullpath)
            commandArray.extend(["-root_path", localpath])
            rom = fullpath
        else:
            commandArray.extend(["-root_path", "/userdata/roms/pico8"
                                 ])  # store carts from splore

        if (rombase.lower() == "splore" or rombase.lower() == "console"):
            commandArray.extend(["-splore"])
        else:
            commandArray.extend(["-run", rom])

        controllersdir = os.path.dirname(CONTROLLERS)
        if not os.path.exists(controllersdir):
            os.makedirs(controllersdir)
        controllersconfig = controllersConfig.generateSdlGameControllerConfig(
            playersControllers)
        with open(CONTROLLERS, "w") as file:
            file.write(controllersconfig)

        return Command.Command(array=commandArray, env={})
Exemplo n.º 24
0
    def generate(self, system, rom, playersControllers, gameResolution):

        commandArray = [
            "dhewm3", "+set", "fs_basepath", "/userdata/roms/doom3", "+set",
            "r_mode", "3"
        ]

        return Command.Command(
            array=commandArray,
            env={
                "SDL_GAMECONTROLLERCONFIG":
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 25
0
    def generate(self, system, rom, playersControllers, gameResolution):
        os.chdir("/userdata/roms/hode")
        commandArray = [
            "hode", "--datapath=/userdata/roms/hode",
            "--savepath=/userdata/saves/hode"
        ]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 26
0
    def generate(self, system, rom, playersControllers, gameResolution):

        configdir = "/userdata/system/configs/redream"
        if not os.path.exists(configdir):
            os.makedirs(configdir)

        copyfile("/usr/bin/redream", configdir + "/redream")
        os.chmod(configdir + "/redream", 0o0775)

        commandArray = [configdir + "/redream", rom]
        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG': controllersConfig.generateSdlGameControllerConfig(playersControllers)
            })
Exemplo n.º 27
0
    def generate(self, system, rom, playersControllers, gameResolution):
        gamemod = "baseq2"
        if (rom.__contains__("rogue")):
            gamemod = "rogue"

        if (rom.__contains__("xatrix")):
            gamemod = "xatrix"

        commandArray = ["quake2", "-datadir", "/userdata/roms/yquake2", "+set", "r_vsync", "1", "+set", "vk_sampleshading", "0", "+set", "vk_polyblend", "0", "+set", "vk_dynamic", "0", "+set", "vk_postprocess", "0", "+set", "game" , gamemod]

        return Command.Command(
            array=commandArray,
            env={
                "SDL_GAMECONTROLLERCONFIG": controllersConfig.generateSdlGameControllerConfig(playersControllers)
            })
Exemplo n.º 28
0
    def generate(self, system, rom, playersControllers, gameResolution):
        if system.name == "windows_installers":
            commandArray = ["batocera-wine", "install", rom]
            return Command.Command(array=commandArray)
        elif system.name == "windows":
            commandArray = ["batocera-wine", "play", rom]
            return Command.Command(
                array=commandArray,
                env={
                    "SDL_GAMECONTROLLERCONFIG":
                    controllersConfig.generateSdlGameControllerConfig(
                        playersControllers),
                })

        raise Exception("invalid system " + system.name)
Exemplo n.º 29
0
    def generate(self, system, rom, playersControllers, gameResolution):
        game = os.path.splitext(os.path.basename(rom))[0]

        arch_suffix = _get_arch_suffix()
        server_lib = _get_server_lib_basename_from_liblist_gam(game)

        # Useful options for debugging:
        # -log        # Log to /userdata/roms/xash3d_fwgs/engine.log
        # -dev 2      # Verbose logging
        # -ref gles2  # Select a specific renderer (gl, gl4es, gles1, gles2, soft)
        commandArray = ['/usr/lib/xash3d/xash3d', '-fullscreen', '-dev']

        # By default, xash3d will use `dlls/hl.so` in the valve directory (via the `liblist.gam` config file).
        # However, that `so` is incompatible with xash3d (it's the x86-glibc version from Valve).
        # We instead point to the hlsdk-xash3d `so`.
        commandArray.append('-clientlib')
        commandArray.append(_find_client_lib(server_lib, arch_suffix))

        commandArray.append('-dll')
        commandArray.append(_find_server_lib(server_lib, arch_suffix))

        commandArray.append('-game')
        commandArray.append(game)

        commandArray.append('+showfps')
        commandArray.append('1' if system.getOptBoolean('showFPS') ==
                            True else '0')

        # https://github.com/FWGS/xash3d-fwgs/issues/307
        commandArray.append('+sv_validate_changelevel')
        commandArray.append('0')

        self._maybeInitConfig(game)
        self._maybeInitSaveDir(game)

        return Command.Command(
            array=commandArray,
            env={
                'XASH3D_BASEDIR':
                _ROMS_DIR,
                'XASH3D_EXTRAS_PAK1':
                _ROMS_DIR + '/extras.pak',
                'LD_LIBRARY_PATH':
                '/usr/lib/xash3d',
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })
Exemplo n.º 30
0
    def generate(self, system, rom, playersControllers, gameResolution):
        addon = "-addon0"
        if (rom.__contains__("WT")):
            addon = "-addon1"

        if (rom.__contains__("TD")):
            addon = "-addon2"

        commandArray = ["voidsw", addon, "-j/userdata/roms/voidsw"]

        return Command.Command(
            array=commandArray,
            env={
                'SDL_GAMECONTROLLERCONFIG':
                controllersConfig.generateSdlGameControllerConfig(
                    playersControllers)
            })