def on_config(self, key, value): config = get_config(self) if key in JOYSTICK_KEYS: prev_value = self.using_joy_emu devices = DeviceManager.get_devices_for_ports(config) for device in devices: if device.id == "keyboard": self.using_joy_emu = True break else: self.using_joy_emu = False if prev_value != self.using_joy_emu: self.rebuild_warnings_and_refresh() elif key.startswith("__"): pass # elif LauncherConfig.is_implicit_option(key): # pass elif LauncherConfig.is_custom_uae_option(key): changed = False if value: if key not in self.custom_uae_config: self.custom_uae_config.add(key) changed = True else: if key in self.custom_uae_config: self.custom_uae_config.remove(key) changed = True if changed: self.rebuild_warnings_and_refresh() elif LauncherConfig.is_custom_option(key): changed = False if value: if key not in self.custom_config: self.custom_config.add(key) changed = True else: if key in self.custom_config: self.custom_config.remove(key) changed = True if changed: self.rebuild_warnings_and_refresh()
def on_config(self, key, value): if key in JOYSTICK_KEYS: prev_value = self.using_joy_emu devices = DeviceManager.get_devices_for_ports(LauncherConfig) for device in devices: if device.id == "keyboard": self.using_joy_emu = True break else: self.using_joy_emu = False if prev_value != self.using_joy_emu: self.rebuild_warnings_and_refresh() elif key.startswith("__"): pass # elif LauncherConfig.is_implicit_option(key): # pass elif LauncherConfig.is_custom_uae_option(key): changed = False if value: if key not in self.custom_uae_config: self.custom_uae_config.add(key) changed = True else: if key in self.custom_uae_config: self.custom_uae_config.remove(key) changed = True if changed: self.rebuild_warnings_and_refresh() elif LauncherConfig.is_custom_option(key): changed = False if value: if key not in self.custom_config: self.custom_config.add(key) changed = True else: if key in self.custom_config: self.custom_config.remove(key) changed = True if changed: self.rebuild_warnings_and_refresh()
def prepare(self): print("FSUAEAmigaDriver.prepare") if not self.options["joystick_port_0_mode"]: self.options["joystick_port_0_mode"] = "mouse" if not self.options["joystick_port_1_mode"]: if self.options["amiga_model"].startswith("CD32"): self.options["joystick_port_1_mode"] = "cd32 gamepad" else: self.options["joystick_port_1_mode"] = "joystick" if not self.options["joystick_port_2_mode"]: self.options["joystick_port_2_mode"] = "none" if not self.options["joystick_port_3_mode"]: self.options["joystick_port_3_mode"] = "none" from launcher.devicemanager import DeviceManager devices = DeviceManager.get_devices_for_ports(self.options) for port in range(4): key = "joystick_port_{0}".format(port) if not self.options[key]: # key not set, use calculated default value self.options[key] = devices[port].id for remove_key in [ "database_username", "database_password", "database_username", "database_email", "database_auth", "device_id", ]: if remove_key in self.options: del self.options[remove_key] # overwrite netplay config if self.options["__netplay_host"]: self.options["netplay_server"] = self.options["__netplay_host"] if self.options["__netplay_password"]: self.options["netplay_password"] = self.options[ "__netplay_password"] if self.options["__netplay_port"]: self.options["netplay_port"] = self.options["__netplay_port"] # copy actual kickstart options from x_ options self.options["kickstart_file"] = self.options["x_kickstart_file"] self.options["kickstart_ext_file"] = self.options[ "x_kickstart_ext_file"] # FIXME: Temporarily disabled # if not self.options["kickstart_file"]: # # Warning will have been shown on the status bar # self.options["kickstart_file"] = "internal" # Copy default configuration values from model defaults. The main # purpose of this is to let the launch code know about implied defaults # so it can for example configure correct ROM files for expansions. model_config = Amiga.get_current_config(self.options) for key, value in model_config["defaults"].items(): if not self.options[key]: self.options[key] = value # make sure FS-UAE does not load other config files (Host.fs-uae) self.options["end_config"] = "1" # Make FS-UAE check that version matches (except for development) if VERSION != "9.8.7dummy": self.options[Option.EXPECT_VERSION] = VERSION if self.options["__netplay_game"]: print("\nfixing config for netplay game") for key in [x for x in config.keys() if x.startswith("uae_")]: print("* removing option", key) del self.options[key] # self.temp_dir = self.fsgc.temp_dir("amiga") # self.change_handler = GameChangeHandler(self.temp_dir) # self.firmware_dir = self.prepare_firmware("Amiga Firmware") # config = self.fsgc.config.copy() model = self.options[Option.AMIGA_MODEL] if model.startswith("CD32"): platform = "CD32" elif model == "CDTV": platform = "CDTV" else: platform = "Amiga" # name = Settings.get("config_name") # name = self.fsgc.game.name # uuid = Config.get("x_game_uuid") # uuid = None from fsgamesys.saves import SaveHandler # save_state_handler = SaveHandler(self.fsgc, self.get_name(), platform) save_state_handler = SaveHandler( self.fsgc, self.options["config_name"], platform, options=self.options, ) print( "[INPUT] joystick_port_1", self.options["joystick_port_1"], "->", self.ports[0].device_id or "none", ) print( "[INPUT] joystick_port_0", self.options["joystick_port_0"], "->", self.ports[1].device_id or "none", ) # self.options["joystick_port_1"] = self.ports[0].device_id or "none" # self.options["joystick_port_0"] = self.ports[1].device_id or "none" self.launch_handler = LaunchHandler( self.fsgc, self.get_name(), self.options, save_state_handler, temp_dir=self.filesdir.path, ) # self.change_handler.init(self.fsgc.get_game_state_dir(), # ignore=["*.uss", "*.sdf"]) # self.launch_handler.config["joystick_port_0"] = \ # self.inputs[1].device_id # self.launch_handler.config["joystick_port_1"] = \ # self.inputs[0].device_id if self.use_fullscreen(): self.launch_handler.config["fullscreen"] = "1" if not self.launch_handler.config.get("fullscreen_mode", ""): # Check if fullscreen mode is overridden by temporary setting. if self.options.get("__fullscreen_mode"): self.launch_handler.config[ "fullscreen_mode"] = self.options.get( "__fullscreen_mode") if self.options.get("__arcade"): # Remove window border when launched from FS-UAE Arcade in # order to reduce flickering self.launch_handler.config["window_border"] = "0" # Set fade out duration to 500, if not already specified. if not self.launch_handler.config.get("fade_out_duration", ""): self.launch_handler.config["fade_out_duration"] = "500" else: self.launch_handler.config["fullscreen"] = "0" self.launch_handler.prepare() run_dir = self.filesdir.path from fsgamesys.amiga.amigaconfig import AmigaConfig # config = AmigaConfig(self.options) self.options = self.launch_handler.config.copy() self.options["run_dir"] = run_dir files = prepare_amiga(self.options) # FIXME: Move function def file_sha1_to_stream(sha1): stream = self.fsgs.file.open("sha1://{0}".format(sha1)) if stream is not None: return stream # FIXME: Move import from fsgamesys.plugins.pluginmanager import PluginManager path = PluginManager.instance().find_file_by_sha1(sha1) if path: return open(path, "rb") # dst = path # dst_partial = dst + ".partial" # sha1_obj = hashlib.sha1() # with open(src, "rb") as fin: # with open(dst_partial, "wb") as fout: # while True: # data = fin.read(65536) # if not data: # break # fout.write(data) # sha1_obj.update(data) # if sha1_obj.hexdigest() != sha1: # raise Exception("File from plugin does not match SHA-1") # os.rename(dst_partial, dst) # return # pass return None install_files(files, run_dir, file_sha1_to_stream) config = ConfigWriter(self.config).create_fsuae_config() config_file = self.temp_file("Config.fs-uae").path with open(config_file, "w", encoding="UTF-8") as f: for line in config: print(line) f.write(line + "\n") self.emulator.args.extend([config_file])
def prepare(self): print("FSUAEAmigaDriver.prepare") if not self.options["joystick_port_0_mode"]: self.options["joystick_port_0_mode"] = "mouse" if not self.options["joystick_port_1_mode"]: if self.options["amiga_model"].startswith("CD32"): self.options["joystick_port_1_mode"] = "cd32 gamepad" else: self.options["joystick_port_1_mode"] = "joystick" if not self.options["joystick_port_2_mode"]: self.options["joystick_port_2_mode"] = "none" if not self.options["joystick_port_3_mode"]: self.options["joystick_port_3_mode"] = "none" from launcher.devicemanager import DeviceManager devices = DeviceManager.get_devices_for_ports(self.options) for port in range(4): key = "joystick_port_{0}".format(port) if not self.options[key]: # key not set, use calculated default value self.options[key] = devices[port].id for remove_key in [ "database_username", "database_password", "database_username", "database_email", "database_auth", "device_id", ]: if remove_key in self.options: del self.options[remove_key] # overwrite netplay config if self.options["__netplay_host"]: self.options["netplay_server"] = self.options["__netplay_host"] if self.options["__netplay_password"]: self.options["netplay_password"] = self.options[ "__netplay_password"] if self.options["__netplay_port"]: self.options["netplay_port"] = self.options["__netplay_port"] # copy actual kickstart options from x_ options self.options["kickstart_file"] = self.options["x_kickstart_file"] self.options["kickstart_ext_file"] = self.options[ "x_kickstart_ext_file"] if not self.options["kickstart_file"]: # Warning will have been shown on the status bar self.options["kickstart_file"] = "internal" # Copy default configuration values from model defaults. The main # purpose of this is to let the launch code know about implied defaults # so it can for example configure correct ROM files for expansions. model_config = Amiga.get_current_config(self.options) for key, value in model_config["defaults"].items(): if not self.options[key]: self.options[key] = value # make sure FS-UAE does not load other config files (Host.fs-uae) self.options["end_config"] = "1" # Make FS-UAE check that version matches (except for development) if VERSION != "9.8.7dummy": self.options[Option.EXPECT_VERSION] = VERSION if self.options["__netplay_game"]: print("\nfixing config for netplay game") for key in [x for x in config.keys() if x.startswith("uae_")]: print("* removing option", key) del self.options[key] # self.temp_dir = self.fsgc.temp_dir("amiga") # self.change_handler = GameChangeHandler(self.temp_dir) # self.firmware_dir = self.prepare_firmware("Amiga Firmware") # config = self.fsgc.config.copy() model = self.options[Option.AMIGA_MODEL] if model.startswith("CD32"): platform = "CD32" elif model == "CDTV": platform = "CDTV" else: platform = "Amiga" # name = Settings.get("config_name") # name = self.fsgc.game.name # uuid = Config.get("x_game_uuid") # uuid = None from fsgs.saves import SaveHandler # save_state_handler = SaveHandler(self.fsgc, self.get_name(), platform) save_state_handler = SaveHandler( self.fsgc, app.settings.get("config_name"), platform, options=self.options, ) print( "[INPUT] joystick_port_1", self.options["joystick_port_1"], "->", self.ports[0].device_id or "none", ) print( "[INPUT] joystick_port_0", self.options["joystick_port_0"], "->", self.ports[1].device_id or "none", ) # self.options["joystick_port_1"] = self.ports[0].device_id or "none" # self.options["joystick_port_0"] = self.ports[1].device_id or "none" self.launch_handler = LaunchHandler( self.fsgc, self.get_name(), self.options, save_state_handler, temp_dir=self.cwd.path, ) # self.change_handler.init(self.fsgc.get_game_state_dir(), # ignore=["*.uss", "*.sdf"]) # self.launch_handler.config["joystick_port_0"] = \ # self.inputs[1].device_id # self.launch_handler.config["joystick_port_1"] = \ # self.inputs[0].device_id if self.use_fullscreen(): self.launch_handler.config["fullscreen"] = "1" if not self.launch_handler.config.get("fullscreen_mode", ""): # Check if fullscreen mode is overridden by temporary setting. if Settings.instance()["__fullscreen_mode"]: self.launch_handler.config[ "fullscreen_mode"] = Settings.instance( )["__fullscreen_mode"] if Settings.instance()["__arcade"]: # Remove window border when launched from FS-UAE Arcade in # order to reduce flickering self.launch_handler.config["window_border"] = "0" # Set fade out duration to 500, if not already specified. if not self.launch_handler.config.get("fade_out_duration", ""): self.launch_handler.config["fade_out_duration"] = "500" else: self.launch_handler.config["fullscreen"] = "0" self.launch_handler.prepare() config = self.launch_handler.create_config() config_file = self.temp_file("config.fs-uae").path with open(config_file, "w", encoding="UTF-8") as f: for line in config: print(line) f.write(line + "\n") self.emulator.args.extend([config_file])