diff --git a/projects/configgen/configgen/generators/libretro/libretroControllers.py b/projects/configgen/configgen/generators/libretro/libretroControllers.py index 137ad3d471cba7fe26276bd4ba1e96d77ca20b9e..347b7f750394f62c94b4612a5385fec1300b1365 100644 --- a/projects/configgen/configgen/generators/libretro/libretroControllers.py +++ b/projects/configgen/configgen/generators/libretro/libretroControllers.py @@ -347,13 +347,13 @@ class LibretroControllers: btnvalue = btnmap[btnkey] if controller.HasInput(btnkey): inp: InputItem = controller.Input(btnkey) - settings.setString("input_player%s_%s%s" % (controller.PlayerIndex, btnvalue, self.typetoname[inp.Type]), + settings.setString("input_player%s_%s%s" % (playerIndex, btnvalue, self.typetoname[inp.Type]), self.getConfigValue(inputIndex, inp)) for dirkey in self.retroarchdirs: dirvalue = self.retroarchdirs[dirkey] if controller.HasInput(dirkey): inp = controller.Input(dirkey) - settings.setString("input_player%s_%s%s" % (controller.PlayerIndex, dirvalue, self.typetoname[inp.Type]), + settings.setString("input_player%s_%s%s" % (playerIndex, dirvalue, self.typetoname[inp.Type]), self.getConfigValue(inputIndex, inp)) for jskey in self.retroarchjoysticks: jsvalue = self.retroarchjoysticks[jskey] if not system.RotateControls else self.retroarchjoysticksTate[jskey] @@ -362,10 +362,10 @@ class LibretroControllers: # handle inverted axis minus = "-" if inp.Value < 0 else "+" plus = "+" if inp.Value < 0 else "-" - settings.setString("input_player%s_%s_minus_axis" % (controller.PlayerIndex, jsvalue), self.getJoystickSignRotated(system.RotateControls, minus, jskey) + str(inp.Id)) - settings.setString("input_player%s_%s_plus_axis" % (controller.PlayerIndex, jsvalue), self.getJoystickSignRotated(system.RotateControls, plus, jskey) + str(inp.Id)) + settings.setString("input_player%s_%s_minus_axis" % (playerIndex, jsvalue), self.getJoystickSignRotated(system.RotateControls, minus, jskey) + str(inp.Id)) + settings.setString("input_player%s_%s_plus_axis" % (playerIndex, jsvalue), self.getJoystickSignRotated(system.RotateControls, plus, jskey) + str(inp.Id)) - if controller.PlayerIndex == 1: + if playerIndex == 1: specialMap: Dict[int, str] = {} # No menu always priority if specials == "nomenu": @@ -385,14 +385,14 @@ class LibretroControllers: # No default keymap? if self.nodefaultkeymap: for btnkey in self.retroarchbtns: - settings.setString("input_player%s_%s" % (controller.PlayerIndex, self.retroarchbtns[btnkey]), '"nul"') + settings.setString("input_player%s_%s" % (playerIndex, self.retroarchbtns[btnkey]), '"nul"') for dirkey in self.retroarchdirs: - settings.setString("input_player%s_%s" % (controller.PlayerIndex, self.retroarchdirs[dirkey]), '"nul"') + settings.setString("input_player%s_%s" % (playerIndex, self.retroarchdirs[dirkey]), '"nul"') else: for btnkey in self.retroarchbtns: - settings.removeOption("input_player%s_%s" % (controller.PlayerIndex, self.retroarchbtns[btnkey])) + settings.removeOption("input_player%s_%s" % (playerIndex, self.retroarchbtns[btnkey])) for dirkey in self.retroarchdirs: - settings.removeOption("input_player%s_%s" % (controller.PlayerIndex, self.retroarchdirs[dirkey])) + settings.removeOption("input_player%s_%s" % (playerIndex, self.retroarchdirs[dirkey])) settings.setString("input_enable_hotkey", '"f12"') settings.setString("input_exit_emulator", '"escape"') diff --git a/projects/configgen/configgen/generators/libretro/libretroGenerator.py b/projects/configgen/configgen/generators/libretro/libretroGenerator.py index 76c5963204d47488122f3a9434d750e26d1c13ba..c3389f4c343be9a27981addf2eec335e810a398c 100644 --- a/projects/configgen/configgen/generators/libretro/libretroGenerator.py +++ b/projects/configgen/configgen/generators/libretro/libretroGenerator.py @@ -548,6 +548,22 @@ class LibretroGenerator(Generator): @staticmethod def createConfigurationFile(system: Emulator, playersControllers: ControllerPerPlayer, rom: str, demo: bool, nodefaultkeymap: bool, recalboxOptions: keyValueSettings) -> (str, str, List[str]): + + availableControllers = dict() + controller = 1 + + from configgen.generators.libretro.libretroLightGuns import libretroLightGun + lightgunConfig = libretroLightGun(system, rom, False, dict(), dict(), dict()) + if not lightgunConfig.isLightGunGame(system.Name): + for k in list(playersControllers.keys()): + if playersControllers[k].DeviceName == "Namco GunCon 2": + del playersControllers[k] + else: + availableControllers[controller] = playersControllers[k] + controller = controller + 1 + + playersControllers = availableControllers + # Setup system configuration configuration = libretroConfigurations.LibretroConfiguration(system, playersControllers, rom, demo, nodefaultkeymap, recalboxOptions) diff --git a/projects/configgen/configgen/generators/libretro/libretroLightGuns.py b/projects/configgen/configgen/generators/libretro/libretroLightGuns.py index 6be741ef3a3b08426bdc730e8922a194f668b0c2..1c230131dfe0d8a5371cf1a0003a999349344059 100644 --- a/projects/configgen/configgen/generators/libretro/libretroLightGuns.py +++ b/projects/configgen/configgen/generators/libretro/libretroLightGuns.py @@ -374,3 +374,16 @@ class libretroLightGun: ## set LightGun Configuration for the game selected result: bool = self.__setLightGunConfig(self.__System.Name, gameName, guntype) return result + + def isLightGunGame(self, systemName) -> bool: + ## get file name from es_state.inf file + gameName = self.__getGameNameFromESState() + guntype = "guncon2" + + ## set LightGun Configuration for the game selected + try: + self.__setLightGunConfig(systemName, gameName, guntype) + return False + except: + return True +