diff -Nru fs-uae-arcade-2.9.5/arcade/arcade_main.py fs-uae-arcade-2.9.6~dev/arcade/arcade_main.py
--- fs-uae-arcade-2.9.5/arcade/arcade_main.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/arcade/arcade_main.py 2017-05-25 10:07:54.000000000 +0000
@@ -2,6 +2,7 @@
from arcade.glui.imageloader import ImageLoader
from arcade.ui.arcade_window import ArcadeWindow, check_argument, fullscreen, \
maximized
+from fsbc.settings import Settings
from fsbc.system import macosx
from .gnome3 import running_in_gnome_3, handle_gnome_extensions
@@ -55,6 +56,8 @@
# We want a normal window.
pass
+ Settings.instance().set("__arcade", "1")
+
# if windows:
# pass
# elif macosx:
diff -Nru fs-uae-arcade-2.9.5/arcade/glui/gamecenterrunner.py fs-uae-arcade-2.9.6~dev/arcade/glui/gamecenterrunner.py
--- fs-uae-arcade-2.9.5/arcade/glui/gamecenterrunner.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/arcade/glui/gamecenterrunner.py 2017-05-25 10:07:54.000000000 +0000
@@ -2,6 +2,7 @@
import threading
from arcade.glui.state import State
+from fsbc.settings import Settings
from fsui.qt import QCursor
@@ -77,6 +78,16 @@
# noinspection PyCallByClass,PyTypeChecker
QCursor.setPos(x, y)
+ # cursor_x = Settings.instance().get("__cursor_x")
+ # cursor_y = Settings.instance().get("__cursor_y")
+ # try:
+ # cursor_x = int(cursor_x)
+ # cursor_y = int(cursor_y)
+ # except ValueError:
+ # pass
+ # else:
+ # QCursor.setPos(cursor_x, cursor_y)
+
threading.Thread(target=self._run_thread,
name="GameRunnerRunThread").start()
diff -Nru fs-uae-arcade-2.9.5/arcade/glui/launchmenu.py fs-uae-arcade-2.9.6~dev/arcade/glui/launchmenu.py
--- fs-uae-arcade-2.9.5/arcade/glui/launchmenu.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/arcade/glui/launchmenu.py 2017-05-25 10:07:54.000000000 +0000
@@ -18,7 +18,7 @@
STATE_ABORTING = 5
STATE_ABORTED = 6
-FADE_TIME = 1.0
+FADE_TIME = 0.5
class LaunchMenu(Menu):
diff -Nru fs-uae-arcade-2.9.5/arcade/glui/window.py fs-uae-arcade-2.9.6~dev/arcade/glui/window.py
--- fs-uae-arcade-2.9.5/arcade/glui/window.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/arcade/glui/window.py 2017-05-25 10:07:54.000000000 +0000
@@ -1408,8 +1408,7 @@
State.get().fade_splash = True
State.get().fade_start = State.get().time
- State.get().fade_end = State.get().time + 2.0
- # Use 2.0 here to force full black for 1 second
+ State.get().fade_end = State.get().time + 0.5
State.get().fade_from = (0.0, 0.0, 0.0, 2.0)
State.get().fade_to = (0.0, 0.0, 0.0, 0.0)
diff -Nru fs-uae-arcade-2.9.5/arcade/ui/arcade_window.py fs-uae-arcade-2.9.6~dev/arcade/ui/arcade_window.py
--- fs-uae-arcade-2.9.5/arcade/ui/arcade_window.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/arcade/ui/arcade_window.py 2017-05-25 10:07:54.000000000 +0000
@@ -38,7 +38,7 @@
value = check_argument("fullscreen")
if not value:
value = Settings.instance().get("arcade_fullscreen")
- return value == "1"
+ return value != "0"
def maximized():
@@ -126,7 +126,10 @@
def show_auto(self):
if fullscreen():
- self.set_fullscreen(True, screen_geometry())
+ geometry = screen_geometry()
+ self.set_fullscreen(True, geometry)
+ Settings.instance().set("__cursor_x", geometry[2])
+ Settings.instance().set("__cursor_y", geometry[3])
elif maximized():
x, y, w, h = screen_geometry()
self.set_maximized(True, (x, y, 960, 540))
diff -Nru fs-uae-arcade-2.9.5/debian/changelog fs-uae-arcade-2.9.6~dev/debian/changelog
--- fs-uae-arcade-2.9.5/debian/changelog 2013-07-24 18:33:00.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/debian/changelog 2013-07-24 18:33:00.000000000 +0000
@@ -1,4 +1,4 @@
-fs-uae-arcade (2.9.5-0yakkety) yakkety; urgency=low
+fs-uae-arcade (2.9.6~dev-0yakkety) yakkety; urgency=low
* Dummy changelog entry
diff -Nru fs-uae-arcade-2.9.5/dist/macosx/Info.plist fs-uae-arcade-2.9.6~dev/dist/macosx/Info.plist
--- fs-uae-arcade-2.9.5/dist/macosx/Info.plist 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/dist/macosx/Info.plist 2017-05-25 10:07:53.000000000 +0000
@@ -19,11 +19,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 2.9.5
+ 2.9.6
CFBundleSignature
????
CFBundleVersion
- 2.9.5
+ 2.9.6
LSHasLocalizedDisplayName
LSMinimumSystemVersion
diff -Nru fs-uae-arcade-2.9.5/fsboot/__init__.py fs-uae-arcade-2.9.6~dev/fsboot/__init__.py
--- fs-uae-arcade-2.9.5/fsboot/__init__.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsboot/__init__.py 2017-05-25 10:07:53.000000000 +0000
@@ -37,6 +37,9 @@
if "--workspace" in sys.argv:
# Hack
set("fws", "1")
+if "--openretro" in sys.argv:
+ # Hack
+ set("openretro", "1")
if "--logging" in sys.argv:
setup_logging()
sys.argv.remove("--logging")
@@ -205,7 +208,11 @@
@functools.lru_cache()
def custom_path(name):
- for app_name in ["fs-uae-launcher", "fs-uae"]:
+ if get("openretro") == "1":
+ app_names = ["openretro"]
+ else:
+ app_names = ["fs-uae-launcher", "fs-uae"]
+ for app_name in app_names:
key_path = os.path.join(app_config_dir(app_name), name)
logger.debug("Checking %s", repr(key_path))
if os.path.exists(key_path):
@@ -238,18 +245,29 @@
if path:
return path
- logger.debug("Checking FS_UAE_BASE_DIR")
- path = os.environ.get("FS_UAE_BASE_DIR", "")
- if path:
- logger.debug("Base directory via FS_UAE_BASE_DIR: %s", repr(path))
- return path
+ if get("openretro") == "1":
+ logger.debug("Checking OPENRETRO_BASE_DIR")
+ path = os.environ.get("OPENRETRO_BASE_DIR", "")
+ if path:
+ logger.debug("Base directory via OPENRETRO_BASE_DIR: %s", repr(path))
+ return path
+
+ else:
+ logger.debug("Checking FS_UAE_BASE_DIR")
+ path = os.environ.get("FS_UAE_BASE_DIR", "")
+ if path:
+ logger.debug("Base directory via FS_UAE_BASE_DIR: %s", repr(path))
+ return path
path = custom_path("base-dir")
if path:
logger.debug("Base directory via custom path config: %s", repr(path))
return path
- path = os.path.join(documents_dir(True), "FS-UAE")
+ if get("openretro") == "1":
+ path = os.path.join(documents_dir(True), "OpenRetro")
+ else:
+ path = os.path.join(documents_dir(True), "FS-UAE")
if not os.path.exists(path):
os.makedirs(path)
# FIXME: normalize / case-normalize base dir?
diff -Nru fs-uae-arcade-2.9.5/fsgs/amiga/fsuaeamigadriver.py fs-uae-arcade-2.9.6~dev/fsgs/amiga/fsuaeamigadriver.py
--- fs-uae-arcade-2.9.5/fsgs/amiga/fsuaeamigadriver.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/amiga/fsuaeamigadriver.py 2017-05-25 10:07:53.000000000 +0000
@@ -83,6 +83,13 @@
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"
diff -Nru fs-uae-arcade-2.9.5/fsgs/amiga/launchhandler.py fs-uae-arcade-2.9.6~dev/fsgs/amiga/launchhandler.py
--- fs-uae-arcade-2.9.5/fsgs/amiga/launchhandler.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/amiga/launchhandler.py 2017-05-25 10:07:53.000000000 +0000
@@ -90,6 +90,15 @@
self.config["flash_memory_dir"] = ""
self.change_handler = GameChangeHandler(self.temp_dir)
+ self.config["cdroms_dir"] = FSGSDirectories.get_cdroms_dir()
+ self.config[
+ "configurations_dir"] = FSGSDirectories.get_configurations_dir()
+ self.config["controllers_dir"] = FSGSDirectories.get_controllers_dir()
+ self.config["hard_drives_dir"] = FSGSDirectories.get_hard_drives_dir()
+ self.config["kickstarts_dir"] = FSGSDirectories.get_kickstarts_dir()
+ self.config["save_states_dir"] = FSGSDirectories.get_save_states_dir()
+ self.config["themes_dir"] = FSGSDirectories.get_themes_dir()
+
self.prepare_roms()
if self.stop_flag:
return
@@ -711,12 +720,11 @@
print("[WHDLOAD] copy_whdload_files, dest_dir = ", dest_dir)
whdload_dir = ""
- slave = whdload_args.split(" ", 1)[0]
- slave = slave.lower()
+ slave_original_name = whdload_args.split(" ", 1)[0]
+ slave = slave_original_name.lower()
found_slave = False
for dir_path, dir_names, file_names in os.walk(dest_dir):
for name in file_names:
- # print(name, slave)
if name.lower() == slave:
print("[WHDLOAD] Found", name)
found_slave = True
@@ -732,8 +740,8 @@
break
if not found_slave:
raise Exception(
- "Did not find the specified WHDLoad slave. "
- "Check the WHDLoad arguments")
+ "Did not find the specified WHDLoad slave {}. "
+ "Check the WHDLoad arguments".format(repr(slave_original_name)))
print("[WHDLOAD] Slave directory:", repr(whdload_dir))
print("[WHDLOAD] Slave arguments:", whdload_args)
diff -Nru fs-uae-arcade-2.9.5/fsgs/amiga/whdload.py fs-uae-arcade-2.9.6~dev/fsgs/amiga/whdload.py
--- fs-uae-arcade-2.9.5/fsgs/amiga/whdload.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/amiga/whdload.py 2017-05-25 10:07:53.000000000 +0000
@@ -338,6 +338,7 @@
"DGenerationCD32/DGenerationCD32.info",
"EmeraldMine2/EmeraldMine2.info",
"Entity/Entity.info",
+ "EyeOfTheStorm/EyeOfTheStorm.info",
"Fuzzball/Fuzzball.info",
"Genesia/Genesia.info",
"GenesiaFr/GenesiaFr.info",
diff -Nru fs-uae-arcade-2.9.5/fsgs/drivers/gamedriver.py fs-uae-arcade-2.9.6~dev/fsgs/drivers/gamedriver.py
--- fs-uae-arcade-2.9.5/fsgs/drivers/gamedriver.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/drivers/gamedriver.py 2017-05-25 10:07:53.000000000 +0000
@@ -7,6 +7,7 @@
import fsboot
from fsbc.application import Application
+from fsbc.resources import Resources
from fsbc.settings import Settings
from fsbc.system import System
from fsbc.task import current_task
@@ -50,11 +51,19 @@
self.temp_root = TemporaryItem(
root=None, prefix="fsgs-", suffix="tmp", directory=True)
- # Default current working directory for the emulator.
+ # # Default current working directory for the emulator.
self.cwd = self.temp_dir("cwd")
- # Fake home directory for the emulator.
+ # # Fake home directory for the emulator.
self.home = self.temp_dir("home")
+ self.home._path = os.path.join(FSGSDirectories.get_cache_dir(), "Home")
+ if not os.path.exists(self.home.path):
+ os.makedirs(self.home.path)
+ self.cwd._path = self.home._path
+ # self.cwd._path = os.path.join(self.home._path, "cwd")
+ # if not os.path.exists(self.cwd.path):
+ # os.makedirs(self.cwd.path)
+
# Deprecated compatibility name
self.args = self.emulator.args
# Deprecated compatibility name
@@ -160,7 +169,7 @@
NO_STRETCHING = "0"
STRETCH_FILL_SCREEN = "1"
STRETCH_ASPECT = "aspect"
- DEFAULT_STRETCHING = STRETCH_FILL_SCREEN
+ DEFAULT_STRETCHING = STRETCH_ASPECT
def stretching(self):
if self.options[Option.STRETCH] == self.NO_STRETCHING:
@@ -545,14 +554,24 @@
env["FSGS_WINDOW_TITLE"] = self._model_name
env.update(self.env)
- env["HOME"] = self.home.path
+ if not self.emulator.allow_home_access:
+ env["HOME"] = self.home.path
if not self._allow_gsync:
# DOSBox-FS and Fuse-FS does not work nicely with G-SYNC yet.
# Enabling G-SYNC causes stuttering.
+ # Update: Should work fine with DOSBox-FS now...
env["__GL_GSYNC_ALLOWED"] = "0"
# Disable V-Sync
env["__GL_SYNC_TO_VBLANK"] = "0"
+
+ # Make sure we are allowed to flip buff ers faster than the screen
+ # refresh rate, important for e.g. DOSBox @70Hz.
+ # https://dri.freedesktop.org/wiki/ConfigurationOptions/
+ # 1 = Application preference, default interval 0
+ # Update: Not needed when emulators explicitly set swap interval 0.
+ # env["vblank_mode"] = "1"
+
self.update_environment_with_centering_info(env)
def update_environment_with_centering_info(self, env):
@@ -596,6 +615,16 @@
# print("window position", env["SDL_VIDEO_WINDOW_POS"])
# os.environ["SDL_VIDEO_WINDOW_POS"] = "{0},{1}".format(x, y)
+ def prepare_emulator_skin(self, env):
+ path = self.temp_file("left.png").path
+ with open(path, "wb") as f:
+ f.write(Resources("fsgs").stream("res/emu/left.png").read())
+ env["FSGS_SKIN_LEFT"] = path
+ path = self.temp_file("right.png").path
+ with open(path, "wb") as f:
+ f.write(Resources("fsgs").stream("res/emu/right.png").read())
+ env["FSGS_SKIN_RIGHT"] = path
+
def start_emulator(
self, emulator, args=None, env_vars=None, executable=None,
cwd=None):
@@ -615,7 +644,6 @@
args = []
args.extend(self.args)
- print(repr(args))
if "SDL_VIDEODRIVER" in os.environ:
print("SDL_VIDEODRIVER was present in environment, removing!")
@@ -624,9 +652,16 @@
env = os.environ.copy()
FSUAE.add_environment_from_settings(env)
self.update_environment(env)
+ self.prepare_emulator_skin(env)
if env_vars:
env.update(env_vars)
- print(env)
+ print("")
+ for key in sorted(env.keys()):
+ print("[ENV]", key, ":", repr(env[key]))
+ print("")
+ for arg in args:
+ print("[ARG]", repr(arg))
+ print("")
kwargs = {}
if env is not None:
@@ -635,13 +670,15 @@
kwargs["cwd"] = cwd
else:
kwargs["cwd"] = self.cwd.path
- print("[EMULATOR] CWD:", kwargs["cwd"])
+ print("[CWD]", kwargs["cwd"])
+ print("")
if System.windows:
kwargs["close_fds"] = True
- print(" ".join(args))
+ # print(" ".join(args))
current_task.set_progress(
"Starting {emulator}".format(emulator=emulator))
- # process = subprocess.Popen(*args, **kwargs)
+ # import subprocess
+ # return subprocess.Popen(["strace", emulator.path] + args, **kwargs)
return emulator.popen(args, **kwargs)
# return process
@@ -875,6 +912,7 @@
self.env = {}
self.process = None
# self.allow_system_emulator = False
+ self.allow_home_access = False
class GameFiles:
diff -Nru fs-uae-arcade-2.9.5/fsgs/drivers/mamedriver.py fs-uae-arcade-2.9.6~dev/fsgs/drivers/mamedriver.py
--- fs-uae-arcade-2.9.5/fsgs/drivers/mamedriver.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/drivers/mamedriver.py 2017-05-25 10:07:53.000000000 +0000
@@ -19,6 +19,9 @@
super().__init__(fsgs)
# self.emulator.name = "multiemu-fs"
self.emulator.name = "arcade-fs"
+ # To prevent slow startup on Linux due to scanning all system
+ # fonts.
+ self.emulator.allow_home_access = True
self.mame_init()
def mame_emulator_name(self):
diff -Nru fs-uae-arcade-2.9.5/fsgs/FSGSDirectories.py fs-uae-arcade-2.9.6~dev/fsgs/FSGSDirectories.py
--- fs-uae-arcade-2.9.5/fsgs/FSGSDirectories.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/FSGSDirectories.py 2017-05-25 10:07:53.000000000 +0000
@@ -9,6 +9,7 @@
from fsbc.system import windows, macosx
from fsbc.user import get_common_documents_dir
from fsbc.user import get_documents_dir
+from fsgs import openretro
class FSGSDirectories(object):
@@ -60,7 +61,10 @@
def get_configurations_dir(cls):
path = cls.portable_dir("configurations_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Configurations")
+ if openretro:
+ path = os.path.join(cls.get_data_dir(), "Configs")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Configurations")
if not os.path.exists(path):
os.makedirs(path)
path = Paths.get_real_case(path)
@@ -71,7 +75,10 @@
def get_controllers_dir(cls):
path = cls.portable_dir("controllers_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Controllers")
+ if openretro:
+ path = os.path.join(cls.get_data_dir(), "Devs", "Joysticks")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Controllers")
if not os.path.exists(path):
os.makedirs(path)
path = Paths.get_real_case(path)
@@ -82,7 +89,10 @@
def get_kickstarts_dir(cls):
path = cls.portable_dir("kickstarts_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Kickstarts")
+ if openretro:
+ path = os.path.join(cls.media_dir(), "ROMs")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Kickstarts")
if not os.path.exists(path):
os.makedirs(path)
path = Paths.get_real_case(path)
@@ -111,7 +121,10 @@
def get_floppies_dir(cls):
path = cls.portable_dir("floppies_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Floppies")
+ if openretro:
+ path = os.path.join(cls.media_dir(), "Floppies")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Floppies")
if not os.path.exists(path):
os.makedirs(path)
path = Paths.get_real_case(path)
@@ -122,7 +135,10 @@
def get_hard_drives_dir(cls):
path = cls.portable_dir("hard_drives_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Hard Drives")
+ if openretro:
+ path = os.path.join(cls.media_dir(), "HardDrives")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Hard Drives")
if not os.path.exists(path):
os.makedirs(path)
path = Paths.get_real_case(path)
@@ -133,7 +149,10 @@
def get_cdroms_dir(cls):
path = cls.portable_dir("cdroms_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "CD-ROMs")
+ if openretro:
+ path = os.path.join(cls.media_dir(), "CD-ROMs")
+ else:
+ path = os.path.join(cls.get_base_dir(), "CD-ROMs")
if not os.path.exists(path):
os.makedirs(path)
path = Paths.get_real_case(path)
@@ -179,6 +198,17 @@
@classmethod
@functools.lru_cache()
+ def media_dir(cls):
+ path = cls.portable_dir("media_dir")
+ if not path:
+ path = os.path.join(cls.get_base_dir(), "Media")
+ if not os.path.exists(path):
+ os.makedirs(path)
+ path = Paths.get_real_case(path)
+ return path
+
+ @classmethod
+ @functools.lru_cache()
def images_dir_for_sha1(cls, sha1):
path = os.path.join(cls.images_dir(), sha1[:2])
# if not os.path.exists(path):
@@ -195,7 +225,10 @@
def get_titles_dir(cls):
path = cls.portable_dir("titles_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Titles")
+ if openretro:
+ path = os.path.join(cls.get_data_dir(), "Titles")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Titles")
return path
@classmethod
@@ -214,7 +247,10 @@
def get_save_states_dir(cls):
path = cls.portable_dir("save_states_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Save States")
+ if openretro:
+ path = os.path.join(cls.get_data_dir(), "Saves")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Save States")
if not os.path.exists(path):
os.makedirs(path)
path = Paths.get_real_case(path)
@@ -237,7 +273,10 @@
def get_screenshots_dir(cls):
path = cls.portable_dir("screenshots_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Screenshots")
+ if openretro:
+ path = os.path.join(cls.get_data_dir(), "Screenshots")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Screenshots")
return path
@classmethod
@@ -252,7 +291,10 @@
def get_covers_dir(cls):
path = cls.portable_dir("covers_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Covers")
+ if openretro:
+ path = os.path.join(cls.get_data_dir(), "Covers")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Covers")
return path
@classmethod
@@ -260,7 +302,10 @@
def get_themes_dir(cls):
path = cls.portable_dir("themes_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Themes")
+ if openretro:
+ path = os.path.join(cls.get_data_dir(), "Themes")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Themes")
if not os.path.exists(path):
os.makedirs(path)
return path
@@ -270,7 +315,10 @@
def get_plugins_dir(cls):
path = cls.portable_dir("plugins_dir")
if not path:
- path = os.path.join(cls.get_base_dir(), "Plugins")
+ if openretro:
+ path = os.path.join(cls.get_data_dir(), "Plugins")
+ else:
+ path = os.path.join(cls.get_base_dir(), "Plugins")
if not os.path.exists(path):
os.makedirs(path)
return path
diff -Nru fs-uae-arcade-2.9.5/fsgs/__init__.py fs-uae-arcade-2.9.6~dev/fsgs/__init__.py
--- fs-uae-arcade-2.9.5/fsgs/__init__.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/__init__.py 2017-05-25 10:07:53.000000000 +0000
@@ -16,3 +16,4 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
product = "FS-UAE"
+openretro = False
\ No newline at end of file
diff -Nru fs-uae-arcade-2.9.5/fsgs/option.py fs-uae-arcade-2.9.6~dev/fsgs/option.py
--- fs-uae-arcade-2.9.5/fsgs/option.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/option.py 2017-05-25 10:07:53.000000000 +0000
@@ -99,11 +99,16 @@
DONGLE_TYPE = "dongle_type"
DOS_DATABASE = "dos_database"
DOS_EMULATOR = "dos_emulator"
+ DOSBOX_CPU_CORE = "dosbox_cpu_core"
+ DOSBOX_CPU_CPUTYPE = "dosbox_cpu_cputype"
DOSBOX_CPU_CYCLES = "dosbox_cpu_cycles"
DOSBOX_GUS_GUS = "dosbox_gus_gus"
DOSBOX_MACHINE = "dosbox_machine"
DOSBOX_MEMSIZE = "dosbox_memsize"
DOSBOX_SBLASTER_IRQ = "dosbox_sblaster_irq"
+ DOSBOX_SBLASTER_OPLRATE = "dosbox_sblaster_oplrate"
+ DOSBOX_SBLASTER_SBBASE = "dosbox_sblaster_sbbase"
+ DOSBOX_SBLASTER_SBTYPE = "dosbox_sblaster_sbtype"
EFFECT = "effect"
END_CONFIG = "end_config"
EXPECT_VERSION = "expect_version"
@@ -149,6 +154,7 @@
FLOPPY_OVERLAYS_DIR = "floppy_overlays_dir"
FMV_ROM = "fmv_rom"
FPU = "fpu"
+ FRAME = "frame"
FREEZER_CARTRIDGE = "freezer_cartridge"
FSAA = "fsaa"
FULL_KEYBOARD = "full_keyboard"
@@ -438,6 +444,7 @@
UAE_Z3MEM_SIZE = "uae_z3mem_size"
UAE_Z3MEM_START = "uae_z3mem_start"
UAEGFX_CARD = "uaegfx_card"
+ UAELOG = "uaelog"
UAEM_WRITE_FLAGS = "uaem_write_flags"
UAENATIVE_LIBRARY = "uaenative_library"
UNSAFE_SAVE_STATES = "unsafe_save_states"
diff -Nru fs-uae-arcade-2.9.5/fsgs/platforms/c64/vicec64driver.py fs-uae-arcade-2.9.6~dev/fsgs/platforms/c64/vicec64driver.py
--- fs-uae-arcade-2.9.5/fsgs/platforms/c64/vicec64driver.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/platforms/c64/vicec64driver.py 2017-05-25 10:07:53.000000000 +0000
@@ -38,6 +38,8 @@
"""
import os
+import shutil
+
from fsbc.system import windows, macosx
from fsgs.drivers.gamedriver import GameDriver
from fsgs.input.mapper import InputMapper
@@ -79,6 +81,8 @@
def prepare(self):
dot_vice_dir = os.path.join(self.home.path, ".vice")
+ if os.path.exists(dot_vice_dir):
+ shutil.rmtree(dot_vice_dir)
os.makedirs(dot_vice_dir)
# noinspection SpellCheckingInspection
diff -Nru fs-uae-arcade-2.9.5/fsgs/platforms/dos/dosboxdosdriver.py fs-uae-arcade-2.9.6~dev/fsgs/platforms/dos/dosboxdosdriver.py
--- fs-uae-arcade-2.9.5/fsgs/platforms/dos/dosboxdosdriver.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/platforms/dos/dosboxdosdriver.py 2017-05-25 10:07:53.000000000 +0000
@@ -29,7 +29,7 @@
import shutil
from fsbc.path import str_path
-from fsbc.system import windows, System
+from fsbc.system import System
from fsgs.FSGSDirectories import FSGSDirectories
from fsgs.drivers.gamedriver import GameDriver
@@ -47,9 +47,14 @@
self.emulator.name = "dosbox-svn"
else:
self.emulator.name = "dosbox-fs"
+
# Right now G-SYNC only works fine with 60Hz modes. There's stuttering
- # when DOSBox outputs 70 fps.
- self.set_allow_gsync(False)
+ # when DOSBox outputs 70 fps. Edit: The problem is that G-SYNC is
+ # capped to monitors selected refresh rate.
+ if self.screen_refresh_rate() < 70.0:
+ print("[VIDEO] Screen refresh rate is < 70.0, disabling G-SYNC")
+ self.set_allow_gsync(False)
+
# self.ultrasnd_drive = None
def __del__(self):
@@ -64,10 +69,21 @@
self.configure(f)
self.args.extend(["-conf", config_file])
+ # FIXME: Move to game driver?
+ if self.options[Option.VIEWPORT]:
+ self.emulator.env["FSGS_VIEWPORT"] = self.options[Option.VIEWPORT]
+
def prepare_media(self):
file_list = json.loads(self.config["file_list"])
self.unpack_game_hard_drives(file_list)
+ if self.options["cue_sheets"]:
+ cue_sheets = json.loads(self.options["cue_sheets"])
+ for cue_sheet in cue_sheets:
+ with open(os.path.join(self.drives_dir.path,
+ cue_sheet["name"]), "wb") as f:
+ f.write(cue_sheet["data"].encode("UTF-8"))
+
def unpack_game_hard_drives(self, file_list):
drives_added = set()
dir_path = self.drives_dir.path
@@ -75,8 +91,8 @@
# if self.stop_flag:
# return
- name = file_entry["name"].upper()
- # name = file_entry["name"]
+ name = file_entry["name"]
+ name = name.upper()
drives_added.add(name[0])
@@ -158,27 +174,38 @@
f.write("\n[cpu]\n")
cpu_core = "auto"
- # cpu_core = "normal"
+ if self.config[Option.DOSBOX_CPU_CORE]:
+ cpu_core = self.config[Option.DOSBOX_CPU_CORE]
+ cpu_core = cpu_core.lower().strip()
+ if System.windows and System.x86_64:
+ # Dynamic core crashes on Windows x86-64
+ print("[DOS] Forcing normal cpu core on Windows x86-64")
+ if cpu_core in ["auto", "dynamic"]:
+ cpu_core = "normal"
f.write("core={0}\n".format(cpu_core))
cpu_cycles = "auto"
+ if self.config[Option.DOSBOX_CPU_CPUTYPE]:
+ f.write("cputype={0}\n".format(
+ self.config[Option.DOSBOX_CPU_CPUTYPE]))
if self.config[Option.DOSBOX_CPU_CYCLES]:
cpu_cycles = self.options[Option.DOSBOX_CPU_CYCLES]
- if cpu_cycles not in ["auto", "max"]:
+ if cpu_cycles.startswith("max "):
+ pass
+ elif cpu_cycles in ["auto", "max"]:
+ pass
+ else:
cpu_cycles = "fixed " + cpu_cycles
f.write("cycles={0}\n".format(cpu_cycles))
f.write("\n[dosbox]\n")
- if self.options[Option.DOSBOX_MEMSIZE]:
- f.write("memsize={}\n".format(self.options[Option.DOSBOX_MEMSIZE]))
if self.options[Option.DOSBOX_MACHINE]:
f.write("machine={}\n".format(self.options[Option.DOSBOX_MACHINE]))
+ if self.options[Option.DOSBOX_MEMSIZE]:
+ f.write("memsize={}\n".format(self.options[Option.DOSBOX_MEMSIZE]))
self.configure_gus(f)
self.configure_midi(f)
-
- f.write("\n[sblaster]\n")
- if self.config[Option.DOSBOX_SBLASTER_IRQ]:
- f.write("irq={}\n".format(self.options[Option.DOSBOX_SBLASTER_IRQ]))
+ self.configure_sblaster(f)
f.write("\n[autoexec]\n")
if self.options[Option.AUTO_LOAD] != "0":
@@ -187,14 +214,22 @@
# pass
for name in os.listdir(self.drives_dir.path):
if name in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
+ p = os.path.join(self.drives_dir.path, name, "CD", "IMAGE.CUE")
+ if os.path.exists(p):
+ f.write('IMGMOUNT {0} "{1}" -t iso\n'.format(name, p))
+ continue
+ p = os.path.join(self.drives_dir.path, name, "CD", "IMAGE.ISO")
+ if os.path.exists(p):
+ f.write('IMGMOUNT {0} "{1}" -t iso\n'.format(name, p))
+ continue
if name in "DEF":
f.write('MOUNT {0} "{1}" -t cdrom\n'.format(
name, os.path.join(self.drives_dir.path, name)))
- else:
- f.write('MOUNT {0} "{1}"\n'.format(
- name, os.path.join(self.drives_dir.path, name)))
+ continue
+ f.write('MOUNT {0} "{1}"\n'.format(
+ name, os.path.join(self.drives_dir.path, name)))
f.write("C:\n")
- # f.write("CLS\n")
+ f.write("CLS\n")
# for i in range(25):
# f.write("echo.\n")
if self.options[Option.AUTO_LOAD] == "0":
@@ -216,7 +251,7 @@
if not self.options[Option.AUTO_QUIT] == "0":
f.write("exit\n")
- if windows:
+ if System.windows:
# We don't want to open the separate console window on windows.
self.args.append("-noconsole")
@@ -248,5 +283,19 @@
f.write("mididevice=alsa\n")
f.write("midiconfig=128:0\n")
+ def configure_sblaster(self, f):
+ f.write("\n[sblaster]\n")
+ if self.config[Option.DOSBOX_SBLASTER_SBTYPE]:
+ f.write("sbtype={}\n".format(
+ self.options[Option.DOSBOX_SBLASTER_SBTYPE]))
+ if self.config[Option.DOSBOX_SBLASTER_SBBASE]:
+ f.write("sbbase={}\n".format(
+ self.options[Option.DOSBOX_SBLASTER_SBBASE]))
+ if self.config[Option.DOSBOX_SBLASTER_IRQ]:
+ f.write("irq={}\n".format(self.options[Option.DOSBOX_SBLASTER_IRQ]))
+ if self.config[Option.DOSBOX_SBLASTER_OPLRATE]:
+ f.write("oplrate={}\n".format(
+ self.options[Option.DOSBOX_SBLASTER_OPLRATE]))
+
def finish(self):
pass
diff -Nru fs-uae-arcade-2.9.5/fsgs/platforms/dos/dosplatform.py fs-uae-arcade-2.9.6~dev/fsgs/platforms/dos/dosplatform.py
--- fs-uae-arcade-2.9.5/fsgs/platforms/dos/dosplatform.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/platforms/dos/dosplatform.py 2017-05-25 10:07:53.000000000 +0000
@@ -19,18 +19,18 @@
class DOSLoader(SimpleLoader):
def load_files(self, values):
self.config["file_list"] = values["file_list"]
+ self.config["cue_sheets"] = values["cue_sheets"]
def load_extra(self, values):
- self.config["dosbox_cpu_cycles"] = values["dosbox_cpu_cycles"]
- self.config["dosbox_sblaster_irq"] = values["sblaster_irq"]
- # FIXME: REMOVE
- self.config["sblaster_irq"] = values["sblaster_irq"]
+ for key in values.keys():
+ if key.startswith("dosbox_"):
+ self.config[key] = values[key]
+ # for key in ["dosbox_cpu_cycles", "dosbox_sblaster_sbtype",
+ # "dosbox_sblaster_sbbase", "dosbox_sblaster_irq",
+ # "dosbox_sblaster_oplrate"]:
+ # self.config[key] = values[key]
self.config["command"] = values["command"]
if not self.config["command"]:
# Deprecated option
self.config["command"] = values["hd_startup"]
-
- for key in values.keys():
- if key.startswith("dosbox_"):
- self.config[key] = values[key]
diff -Nru fs-uae-arcade-2.9.5/fsgs/platforms/loader.py fs-uae-arcade-2.9.6~dev/fsgs/platforms/loader.py
--- fs-uae-arcade-2.9.5/fsgs/platforms/loader.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/platforms/loader.py 2017-05-25 10:07:53.000000000 +0000
@@ -22,6 +22,9 @@
self.config["cartridge_slot"] = "sha1://{0}/{1}".format(
file_list[0]["sha1"], file_list[0]["name"])
+ self.config["cue_sheets"] = values["cue_sheets"]
+
+
def load_extra(self, values):
pass
diff -Nru fs-uae-arcade-2.9.5/fsgs/plugins/plugin_manager.py fs-uae-arcade-2.9.6~dev/fsgs/plugins/plugin_manager.py
--- fs-uae-arcade-2.9.5/fsgs/plugins/plugin_manager.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fsgs/plugins/plugin_manager.py 2017-05-25 10:07:53.000000000 +0000
@@ -30,7 +30,6 @@
class BasePlugin:
-
def __init__(self, path, name, version="0.0.0"):
self.path = path
self.name = name
@@ -53,7 +52,6 @@
class Plugin(BasePlugin):
-
def __init__(self, path, name, version, cp):
super().__init__(path, name, version)
self.load_provides(cp)
@@ -112,7 +110,6 @@
class Expansion(BasePlugin):
-
def __init__(self, path, arch_path):
name = os.path.basename(path)
version_path = os.path.join(arch_path, "Version.txt")
@@ -153,7 +150,6 @@
class PluginResource:
-
def __init__(self, plugin, name):
self.plugin = plugin
self.name = name
@@ -165,7 +161,6 @@
class Executable:
-
def __init__(self, path):
self.path = path
@@ -178,24 +173,20 @@
env = env.copy()
else:
env = os.environ.copy()
- if windows:
- pass
- elif macosx:
- pass
- else:
+
+ if os.environ.get("FS_PLUGINS_LD_LIBRARY_PATH") == "1":
env["LD_LIBRARY_PATH"] = os.path.dirname(self.path)
+
return subprocess.Popen(args, env=env, **kwargs)
class PluginExecutable(Executable):
-
def __init__(self, plugin, path):
super().__init__(path)
self.plugin = plugin
class PluginManager:
-
@classmethod
def instance(cls):
if not hasattr(cls, "_instance") or cls._instance is None:
@@ -209,9 +200,13 @@
if plugins_dir and os.path.isdir(plugins_dir):
result.append(plugins_dir)
expansion_dir = os.path.join(
- FSGSDirectories.get_base_dir(), "Workspace", "Expansion")
+ FSGSDirectories.get_base_dir(), "Workspace", "Expansion")
if expansion_dir and os.path.isdir(expansion_dir):
result.append(expansion_dir)
+ system_plugins_dir = os.path.join(
+ fsboot.executable_dir(), "..", "..", "..", "Plugins")
+ if system_plugins_dir and os.path.isdir(system_plugins_dir):
+ result.append(system_plugins_dir)
return result
def __init__(self):
Binary files /tmp/tmpAOjkoU/TpCSw2J6ar/fs-uae-arcade-2.9.5/fsgs/res/emu/left.png and /tmp/tmpAOjkoU/Kpkc0fVNha/fs-uae-arcade-2.9.6~dev/fsgs/res/emu/left.png differ
Binary files /tmp/tmpAOjkoU/TpCSw2J6ar/fs-uae-arcade-2.9.5/fsgs/res/emu/right.png and /tmp/tmpAOjkoU/Kpkc0fVNha/fs-uae-arcade-2.9.6~dev/fsgs/res/emu/right.png differ
diff -Nru fs-uae-arcade-2.9.5/fstd/desktop/gnome3.py fs-uae-arcade-2.9.6~dev/fstd/desktop/gnome3.py
--- fs-uae-arcade-2.9.5/fstd/desktop/gnome3.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fstd/desktop/gnome3.py 2017-05-25 10:07:54.000000000 +0000
@@ -51,8 +51,6 @@
print("atexit.register reset_gnome_extensions")
atexit.register(reset_gnome_extensions, original_extensions)
- # sys.exit(1)
-
def running_in_gnome_3():
value = os.environ.get("XDG_CURRENT_DESKTOP", "").upper()
diff -Nru fs-uae-arcade-2.9.5/fs-uae-arcade fs-uae-arcade-2.9.6~dev/fs-uae-arcade
--- fs-uae-arcade-2.9.5/fs-uae-arcade 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fs-uae-arcade 2017-05-25 10:07:54.000000000 +0000
@@ -19,7 +19,7 @@
socket.setdefaulttimeout(30.0)
-initialize_application("fs-uae-arcade", version="2.9.5")
+initialize_application("fs-uae-arcade", version="2.9.6dev")
os.environ["SDL_VIDEO_MAC_FULLSCREEN_SPACES"] = "0"
try:
diff -Nru fs-uae-arcade-2.9.5/fs-uae-arcade.spec fs-uae-arcade-2.9.6~dev/fs-uae-arcade.spec
--- fs-uae-arcade-2.9.5/fs-uae-arcade.spec 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/fs-uae-arcade.spec 2017-05-25 10:07:54.000000000 +0000
@@ -1,6 +1,6 @@
%define name fs-uae-arcade
-%define version 2.9.5
-%define unmangled_version 2.9.5
+%define version 2.9.6dev
+%define unmangled_version 2.9.6dev
%define release 1%{?dist}
Summary: Fullscreen game browser for FS-UAE
diff -Nru fs-uae-arcade-2.9.5/launcher/apps/fs_uae_launcher.py fs-uae-arcade-2.9.6~dev/launcher/apps/fs_uae_launcher.py
--- fs-uae-arcade-2.9.5/launcher/apps/fs_uae_launcher.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/apps/fs_uae_launcher.py 2017-05-25 10:07:54.000000000 +0000
@@ -10,6 +10,12 @@
return
print("FS-UAE Launcher {0}".format(VERSION))
+ for i, arg in enumerate(sys.argv[:]):
+ if arg == "--fullscreen" or arg == "--fullscreen=1":
+ sys.argv[i] = "--settings:fullscreen=1"
+ elif arg == "--no-fullscreen" or arg == "--fullscreen=0":
+ sys.argv[i] = "--settings:fullscreen=0"
+
from launcher.launcherapp import LauncherApp
app = LauncherApp()
if "--no-auto-detect-game" in sys.argv:
@@ -43,10 +49,14 @@
FS-UAE Launcher Help"
Options:
+ --new-config[=]
+
+Options for directly launching games:
+ --fullscreen
+ --no-fullscreen
--no-gui Do not show launch progress dialog
--no-auto-detect-game Do not try to auto-detect game from archive
- --new-config[=]
TODO: Add more documentation
"""
diff -Nru fs-uae-arcade-2.9.5/launcher/apps/__init__.py fs-uae-arcade-2.9.6~dev/launcher/apps/__init__.py
--- fs-uae-arcade-2.9.5/launcher/apps/__init__.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/apps/__init__.py 2017-05-25 10:07:54.000000000 +0000
@@ -6,6 +6,8 @@
# Workaround to make import typing work without having it on the default
# python path (would confuse mypy).
+from launcher.option import Option
+
sys.modules["typing"] = fstd.typing
@@ -36,6 +38,22 @@
if "--openretro" in sys.argv:
sys.argv.remove("--openretro")
fsgs.product = "OpenRetro"
+ fsgs.openretro = True
+ # Must also remember to update game_scanner.py
+ Option.get(Option.ARCADE_DATABASE)["default"] = "1"
+ Option.get(Option.ATARI_DATABASE)["default"] = "1"
+ Option.get(Option.C64_DATABASE)["default"] = "1"
+ Option.get(Option.CPC_DATABASE)["default"] = "1"
+ Option.get(Option.DOS_DATABASE)["default"] = "1"
+ Option.get(Option.GB_DATABASE)["default"] = "1"
+ Option.get(Option.GBA_DATABASE)["default"] = "1"
+ Option.get(Option.GBC_DATABASE)["default"] = "1"
+ Option.get(Option.NES_DATABASE)["default"] = "1"
+ Option.get(Option.PSX_DATABASE)["default"] = "1"
+ Option.get(Option.SMD_DATABASE)["default"] = "1"
+ Option.get(Option.SNES_DATABASE)["default"] = "1"
+ Option.get(Option.TG16_DATABASE)["default"] = "1"
+ Option.get(Option.ZXS_DATABASE)["default"] = "1"
# Check new app option.
for arg in sys.argv:
diff -Nru fs-uae-arcade-2.9.5/launcher/game_scanner.py fs-uae-arcade-2.9.6~dev/launcher/game_scanner.py
--- fs-uae-arcade-2.9.5/launcher/game_scanner.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/game_scanner.py 2017-05-25 10:07:54.000000000 +0000
@@ -5,6 +5,7 @@
from functools import lru_cache
from fsbc import settings
+from fsgs import openretro
from fsgs.FSGSDirectories import FSGSDirectories
from fsgs.FileDatabase import FileDatabase
from fsgs.GameDatabase import IncompleteGameException
@@ -45,6 +46,25 @@
if LauncherSettings.get(platform_option) != "0":
return True
return False
+ if openretro:
+ if platform_option in [
+ Option.ARCADE_DATABASE,
+ Option.ATARI_DATABASE,
+ Option.C64_DATABASE,
+ Option.CPC_DATABASE,
+ Option.DOS_DATABASE,
+ Option.GB_DATABASE,
+ Option.GBA_DATABASE,
+ Option.GBC_DATABASE,
+ Option.NES_DATABASE,
+ Option.PSX_DATABASE,
+ Option.SMD_DATABASE,
+ Option.SNES_DATABASE,
+ Option.TG16_DATABASE,
+ Option.ZXS_DATABASE]:
+ if LauncherSettings.get(platform_option) != "0":
+ return True
+ return False
if settings.get(Option.PLATFORMS_FEATURE) != "1":
return False
if LauncherSettings.get(platform_option) == "1":
diff -Nru fs-uae-arcade-2.9.5/launcher/option.py fs-uae-arcade-2.9.6~dev/launcher/option.py
--- fs-uae-arcade-2.9.5/launcher/option.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/option.py 2017-05-25 10:07:54.000000000 +0000
@@ -80,7 +80,7 @@
"type": "Boolean",
},
Option.ARCADE_FULLSCREEN: {
- "default": "0",
+ "default": "1",
"description": N_("Arcade Fullscreen"),
"type": "boolean",
},
@@ -415,7 +415,7 @@
"type": "",
},
Option.FADE_IN_DURATION: {
- "default": "0",
+ "default": "500",
"description": N_("Fade-in Duration on Start"),
"type": "",
},
@@ -461,7 +461,7 @@
]
},
Option.FLOPPY_DRIVE_VOLUME: {
- "default": "25",
+ "default": "20",
"description": N_("Floppy Drive Volume"),
"type": "integer",
"min": 0,
@@ -474,6 +474,15 @@
"min": 0,
"max": 100,
},
+ Option.FRAME: {
+ "default": "auto",
+ "description": N_("Frame"),
+ "type": "",
+ "values": [
+ ("0", N_("None")),
+ ("auto", N_("Auto")),
+ ]
+ },
Option.FREEZER_CARTRIDGE: {
"default": "0",
"description": N_("Freezer Cartridge"),
@@ -889,6 +898,7 @@
("1", N_("Max Scaling")),
("0", N_("No Scaling")),
("integer", N_("Integer Scaling")),
+ ("legacy", N_("Legacy Scaling")),
]
},
Option.SCANLINES: {
@@ -992,7 +1002,7 @@
]
},
Option.STRETCH: {
- "default": "1",
+ "default": "aspect",
"description": N_("Stretch"),
"type": "Choice",
"values": [
@@ -1341,7 +1351,7 @@
"type": "boolean",
},
Option.ZOOM: {
- "default": "auto",
+ "default": "692x540",
"description": N_("Zoom Amiga display (crop)"),
"type": "choice",
"values": [
@@ -1354,7 +1364,7 @@
("640x480+border", N_("640x480 + Border")),
("640x512", "640x512"),
("640x512+border", N_("640x512 + Border")),
- ("704x520", "704x520"),
+ ("692x540", "692x540"),
("704x540", "704x540"),
("704x566", "704x566"),
("724x566", "724x566"),
diff -Nru fs-uae-arcade-2.9.5/launcher/panels/quicksettingspanel.py fs-uae-arcade-2.9.6~dev/launcher/panels/quicksettingspanel.py
--- fs-uae-arcade-2.9.5/launcher/panels/quicksettingspanel.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/panels/quicksettingspanel.py 2017-05-25 10:07:54.000000000 +0000
@@ -21,6 +21,9 @@
SMOOTHING = [] + MEDNAFEN
CROPPING = [Platform.ZXS]
+SCALING += AMIGA_PLATFORMS
+STRETCHING += AMIGA_PLATFORMS
+
class QuickSettingsPanel(fsui.Panel):
def __init__(self, parent, fsgc):
@@ -38,10 +41,11 @@
hori_layout.add(settings_button, margin_right=10)
self.layout.add_spacer(0)
- self.add_option(Option.KEEP_ASPECT, text=gettext("Keep Aspect"),
- platforms=AMIGA_PLATFORMS)
+ # self.add_option(Option.KEEP_ASPECT, text=gettext("Keep Aspect"),
+ # platforms=AMIGA_PLATFORMS)
self.add_option(Option.SCALE, text=None, platforms=SCALING)
self.add_option(Option.STRETCH, text=None, platforms=STRETCHING)
+ self.add_option(Option.ZOOM, text=None, platforms=AMIGA_PLATFORMS)
self.add_option(Option.BORDER, text=None, platforms=BORDER)
self.add_option(Option.SMOOTHING, text=None, platforms=SMOOTHING)
@@ -50,7 +54,7 @@
# self.add_option(Option.CROP, text=None, platforms=CROPPING)
# self.add_option(Option.ZXS_DRIVER, [Platform.ZXS])
- self.add_option(Option.DOS_EMULATOR, [Platform.DOS])
+ # self.add_option(Option.DOS_EMULATOR, [Platform.DOS])
self.add_option(Option.AUTO_LOAD, [Platform.DOS, Platform.ZXS])
self.add_option(Option.AUTO_QUIT, [Platform.DOS])
self.add_option(Option.TURBO_LOAD, [Platform.ZXS])
diff -Nru fs-uae-arcade-2.9.5/launcher/settings/arcade_settings_page.py fs-uae-arcade-2.9.6~dev/launcher/settings/arcade_settings_page.py
--- fs-uae-arcade-2.9.5/launcher/settings/arcade_settings_page.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/settings/arcade_settings_page.py 2017-05-25 10:07:54.000000000 +0000
@@ -1,3 +1,4 @@
+import fsgs
import fsui
from launcher.option import Option
from launcher.settings.settings_page import SettingsPage
@@ -7,7 +8,7 @@
def __init__(self, parent):
super().__init__(parent)
icon = fsui.Icon("fs-uae-arcade", "pkg:launcher")
- self.add_header(icon, "FS-UAE Arcade")
+ self.add_header(icon, "{} Arcade".format(fsgs.product))
self.add_option(Option.ARCADE_FULLSCREEN)
self.add_option(Option.ARCADE_THEME)
self.add_option(Option.ARCADE_INITIAL_FAVORITES)
diff -Nru fs-uae-arcade-2.9.5/launcher/settings/gamedatabasesettingspage.py fs-uae-arcade-2.9.6~dev/launcher/settings/gamedatabasesettingspage.py
--- fs-uae-arcade-2.9.5/launcher/settings/gamedatabasesettingspage.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/settings/gamedatabasesettingspage.py 2017-05-25 10:07:54.000000000 +0000
@@ -1,3 +1,4 @@
+from fsgs import openretro
from launcher.settings.option_ui import OptionUI
import fsui
@@ -23,49 +24,49 @@
self.add_option(Option.DATABASE_SHOW_ADULT)
self.add_option(Option.DATABASE_SHOW_UNPUBLISHED)
- if settings.get(Option.PLATFORMS_FEATURE) == "1":
- self.add_section(gettext("Additional Databases"))
-
- label = fsui.MultiLineLabel(
- self, gettext(
- "Note: This is an experimental feature. "
- "Additional plugins are needed."), 640)
- self.layout.add(label, margin_top=20, margin_bottom=20)
-
- self.add_database_option(Option.CPC_DATABASE, "Amstrad CPC")
- self.add_database_option(Option.ARCADE_DATABASE, "Arcade")
- self.add_database_option(Option.ATARI_DATABASE, "Atari ST")
- self.add_database_option(Option.C64_DATABASE, "Commodore 64")
- self.add_database_option(Option.DOS_DATABASE, "DOS")
- self.add_database_option(Option.GB_DATABASE, "Game Boy")
- self.add_database_option(Option.GBA_DATABASE, "Game Boy Advance")
- self.add_database_option(Option.GBC_DATABASE, "Game Boy Color")
- self.add_database_option(Option.NES_DATABASE, "Nintendo")
- self.add_database_option(Option.PSX_DATABASE, "PlayStation")
- self.add_database_option(Option.SNES_DATABASE, "Super Nintendo")
- self.add_database_option(Option.ZXS_DATABASE, "ZX Spectrum")
-
- # label = fsui.MultiLineLabel(
- # self, gettext(
- # "Note: Support for additional game databases is an "
- # "experimental feature and does not provide the "
- # "same level of maturity as Amiga/CDTV/CD32. "
- # "Also, additional plugins are needed to play the "
- # "games."), 640)
- # self.layout.add(label, margin_top=20)
-
- def add_database_option(self, name, description=""):
- self.options_on_page.add(name)
- group = OptionUI.create_group(
- self, name, description=description, help_button=False)
-
- if self.hori_counter % 2 == 0:
- self.hori_layout = fsui.HorizontalLayout()
- self.layout.add(
- self.hori_layout, fill=True, margin_top=10, margin_bottom=10,
- margin_left=-10, margin_right=-10)
- self.hori_layout.add(group, fill=True, expand=-1, margin=10,
- margin_top=0, margin_bottom=0)
- if self.hori_counter % 2 == 0:
- self.hori_layout.add_spacer(10)
- self.hori_counter += 1
+ # if openretro or settings.get(Option.PLATFORMS_FEATURE) == "1":
+ # self.add_section(gettext("Additional Databases"))
+ #
+ # label = fsui.MultiLineLabel(
+ # self, gettext(
+ # "Note: This is an experimental feature. "
+ # "Additional plugins are needed."), 640)
+ # self.layout.add(label, margin_top=20, margin_bottom=20)
+ #
+ # self.add_database_option(Option.CPC_DATABASE, "Amstrad CPC")
+ # self.add_database_option(Option.ARCADE_DATABASE, "Arcade")
+ # self.add_database_option(Option.ATARI_DATABASE, "Atari ST")
+ # self.add_database_option(Option.C64_DATABASE, "Commodore 64")
+ # self.add_database_option(Option.DOS_DATABASE, "DOS")
+ # self.add_database_option(Option.GB_DATABASE, "Game Boy")
+ # self.add_database_option(Option.GBA_DATABASE, "Game Boy Advance")
+ # self.add_database_option(Option.GBC_DATABASE, "Game Boy Color")
+ # self.add_database_option(Option.NES_DATABASE, "Nintendo")
+ # self.add_database_option(Option.PSX_DATABASE, "PlayStation")
+ # self.add_database_option(Option.SNES_DATABASE, "Super Nintendo")
+ # self.add_database_option(Option.ZXS_DATABASE, "ZX Spectrum")
+ #
+ # # label = fsui.MultiLineLabel(
+ # # self, gettext(
+ # # "Note: Support for additional game databases is an "
+ # # "experimental feature and does not provide the "
+ # # "same level of maturity as Amiga/CDTV/CD32. "
+ # # "Also, additional plugins are needed to play the "
+ # # "games."), 640)
+ # # self.layout.add(label, margin_top=20)
+ #
+ # def add_database_option(self, name, description=""):
+ # self.options_on_page.add(name)
+ # group = OptionUI.create_group(
+ # self, name, description=description, help_button=False)
+ #
+ # if self.hori_counter % 2 == 0:
+ # self.hori_layout = fsui.HorizontalLayout()
+ # self.layout.add(
+ # self.hori_layout, fill=True, margin_top=10, margin_bottom=10,
+ # margin_left=-10, margin_right=-10)
+ # self.hori_layout.add(group, fill=True, expand=-1, margin=10,
+ # margin_top=0, margin_bottom=0)
+ # if self.hori_counter % 2 == 0:
+ # self.hori_layout.add_spacer(10)
+ # self.hori_counter += 1
diff -Nru fs-uae-arcade-2.9.5/launcher/settings/gameplatformssettingspage.py fs-uae-arcade-2.9.6~dev/launcher/settings/gameplatformssettingspage.py
--- fs-uae-arcade-2.9.5/launcher/settings/gameplatformssettingspage.py 1970-01-01 00:00:00.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/settings/gameplatformssettingspage.py 2017-05-25 10:07:54.000000000 +0000
@@ -0,0 +1,69 @@
+from fsgs import openretro
+from launcher.settings.option_ui import OptionUI
+
+import fsui
+from fsbc import settings
+from launcher.i18n import gettext
+from launcher.option import Option
+from launcher.settings.settings_page import SettingsPage
+
+
+class GamePlatformsSettingsPage(SettingsPage):
+ def __init__(self, parent):
+ super().__init__(parent)
+ icon = fsui.Icon("database-settings", "pkg:workspace")
+ title = gettext("Game Platforms")
+ subtitle = ""
+ self.add_header(icon, title, subtitle)
+
+ self.hori_layout = None
+ self.hori_counter = 0
+
+ if openretro or settings.get(Option.PLATFORMS_FEATURE) == "1":
+ # self.add_section(gettext("Game Databases"))
+
+ label = fsui.MultiLineLabel(
+ self, gettext(
+ "Note: This is an experimental feature. "
+ "Additional plugins are needed."), 640)
+ self.layout.add(label, margin_top=20, margin_bottom=20)
+
+ self.add_database_option(Option.CPC_DATABASE, "Amstrad CPC")
+ self.add_database_option(Option.ARCADE_DATABASE, "Arcade")
+ self.add_database_option(Option.ATARI_DATABASE, "Atari ST")
+ self.add_database_option(Option.C64_DATABASE, "Commodore 64")
+ self.add_database_option(Option.DOS_DATABASE, "DOS")
+ self.add_database_option(Option.GB_DATABASE, "Game Boy")
+ self.add_database_option(Option.GBA_DATABASE, "Game Boy Advance")
+ self.add_database_option(Option.GBC_DATABASE, "Game Boy Color")
+ self.add_database_option(Option.NES_DATABASE, "Nintendo")
+ self.add_database_option(Option.PSX_DATABASE, "PlayStation")
+ self.add_database_option(Option.SMD_DATABASE, "Mega Drive")
+ self.add_database_option(Option.SNES_DATABASE, "Super Nintendo")
+ self.add_database_option(Option.TG16_DATABASE, "TurboGrafx-16")
+ self.add_database_option(Option.ZXS_DATABASE, "ZX Spectrum")
+
+ # label = fsui.MultiLineLabel(
+ # self, gettext(
+ # "Note: Support for additional game databases is an "
+ # "experimental feature and does not provide the "
+ # "same level of maturity as Amiga/CDTV/CD32. "
+ # "Also, additional plugins are needed to play the "
+ # "games."), 640)
+ # self.layout.add(label, margin_top=20)
+
+ def add_database_option(self, name, description=""):
+ self.options_on_page.add(name)
+ group = OptionUI.create_group(
+ self, name, description=description, help_button=False)
+
+ if self.hori_counter % 2 == 0:
+ self.hori_layout = fsui.HorizontalLayout()
+ self.layout.add(
+ self.hori_layout, fill=True, margin_top=10, margin_bottom=10,
+ margin_left=-10, margin_right=-10)
+ self.hori_layout.add(group, fill=True, expand=-1, margin=10,
+ margin_top=0, margin_bottom=0)
+ if self.hori_counter % 2 == 0:
+ self.hori_layout.add_spacer(10)
+ self.hori_counter += 1
diff -Nru fs-uae-arcade-2.9.5/launcher/settings/launchersettingspage.py fs-uae-arcade-2.9.6~dev/launcher/settings/launchersettingspage.py
--- fs-uae-arcade-2.9.5/launcher/settings/launchersettingspage.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/settings/launchersettingspage.py 2017-05-25 10:07:54.000000000 +0000
@@ -1,3 +1,5 @@
+import fsgs
+from fsgs import openretro
from launcher.settings.maintenance_settings_page import DefragmentDatabasesTask
import fsboot
@@ -12,7 +14,7 @@
def __init__(self, parent):
super().__init__(parent)
icon = fsui.Icon("fs-uae-launcher", "pkg:launcher")
- self.add_header(icon, "FS-UAE Launcher")
+ self.add_header(icon, "{} Launcher".format(fsgs.product))
if fsboot.get("fws") == "1":
# We omit the appearance settings, since they have no effect
@@ -27,7 +29,8 @@
self.add_section(gettext("Experimental Features"))
# Netplay feature is now enabled by default
# self.add_option(Option.NETPLAY_FEATURE)
- self.add_option(Option.PLATFORMS_FEATURE)
+ if not openretro:
+ self.add_option(Option.PLATFORMS_FEATURE)
# self.add_option(Option.LAUNCHER_CONFIG_FEATURE)
# self.add_option(Option.LAUNCHER_SETUP_WIZARD_FEATURE)
diff -Nru fs-uae-arcade-2.9.5/launcher/settings/settings_dialog.py fs-uae-arcade-2.9.6~dev/launcher/settings/settings_dialog.py
--- fs-uae-arcade-2.9.5/launcher/settings/settings_dialog.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/settings/settings_dialog.py 2017-05-25 10:07:54.000000000 +0000
@@ -1,4 +1,6 @@
+import fsgs
import fsui
+from fsbc import settings
from launcher.i18n import gettext
from launcher.launcher_settings import LauncherSettings
from launcher.launcher_signal import LauncherSignal
@@ -10,6 +12,7 @@
from launcher.settings.directories_settings_page import DirectoriesSettingsPage
from launcher.settings.fs_uae_settings_page import FSUAESettingsPage
from launcher.settings.gamedatabasesettingspage import GameDatabaseSettingsPage
+from launcher.settings.gameplatformssettingspage import GamePlatformsSettingsPage
from launcher.settings.joystick_settings_page import JoystickSettingsPage
from launcher.settings.keyboard_settings_page import KeyboardSettingsPage
from launcher.settings.language_settings_page import LanguageSettingsPage
@@ -32,8 +35,8 @@
return fsui.open_window_instance(cls, parent)
def __init__(self, parent, index=0):
- PagedDialog.__init__(self, parent, "{} - FS-UAE Launcher".format(
- gettext("Settings")))
+ PagedDialog.__init__(self, parent, "{} - {} Launcher".format(
+ gettext("Settings"), fsgs.product))
# FIXME: remove this once the dialog uses Window as base class
# self.setAttribute(Qt.WA_DeleteOnClose, True)
@@ -87,7 +90,7 @@
# gettext("Logging"), LoggingSettingsPage,
# fsui.Icon("settings", "pkg:workspace"))
self.add_page(
- "FS-UAE Launcher", LauncherSettingsPage,
+ "{} Launcher".format(fsgs.product), LauncherSettingsPage,
fsui.Icon("fs-uae-launcher", "pkg:launcher"), bold=True)
self.add_page(
gettext("File Database"), ScanSettingsPage,
@@ -95,6 +98,10 @@
self.add_page(
gettext("Game Database"), GameDatabaseSettingsPage,
fsui.Icon("database-settings", "pkg:workspace"))
+ if fsgs.openretro or settings.get(Option.PLATFORMS_FEATURE) == "1":
+ self.add_page(
+ gettext("Game Platforms"), GamePlatformsSettingsPage,
+ fsui.Icon("database-settings", "pkg:workspace"))
# self.add_page(gettext("Custom Settings"), CustomSettingsPage)
if LauncherSettings.get(Option.NETPLAY_FEATURE) != "0":
self.add_page(
@@ -110,7 +117,7 @@
# gettext("Maintenance"), MaintenanceSettingsPage,
# fsui.Icon("maintenance", "pkg:workspace"))
self.add_page(
- "FS-UAE Arcade", ArcadeSettingsPage,
+ "{} Arcade".format(fsgs.product), ArcadeSettingsPage,
fsui.Icon("fs-uae-arcade", "pkg:launcher"), bold=True)
# Old texts
diff -Nru fs-uae-arcade-2.9.5/launcher/version.py fs-uae-arcade-2.9.6~dev/launcher/version.py
--- fs-uae-arcade-2.9.5/launcher/version.py 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/launcher/version.py 2017-05-25 10:07:54.000000000 +0000
@@ -1 +1 @@
-VERSION = "2.9.5"
+VERSION = "2.9.6dev"
diff -Nru fs-uae-arcade-2.9.5/setup.py fs-uae-arcade-2.9.6~dev/setup.py
--- fs-uae-arcade-2.9.5/setup.py 2017-04-08 14:46:37.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/setup.py 2017-05-25 10:07:53.000000000 +0000
@@ -20,7 +20,7 @@
name = "fs-uae-arcade"
py_name = "fs_uae_arcade"
tar_name = "fs-uae-arcade"
-version = "2.9.5"
+version = "2.9.6dev"
author = "Frode Solheim"
author_email = "frode@fs-uae.net"
package_map = {
@@ -124,7 +124,7 @@
else:
setup_kwargs["executables"] = [Executable(s) for s in scripts]
- setup_kwargs["version"] = "2.9.5"
+ setup_kwargs["version"] = "2.9.6"
build_exe_options = {
"includes": [
# "ctypes",
@@ -174,7 +174,7 @@
if sys.platform == "darwin":
setup_kwargs["name"] = title
- setup_kwargs["version"] = "2.9.5"
+ setup_kwargs["version"] = "2.9.6"
else:
setup_kwargs["scripts"] = scripts
diff -Nru fs-uae-arcade-2.9.5/VERSION fs-uae-arcade-2.9.6~dev/VERSION
--- fs-uae-arcade-2.9.5/VERSION 2017-04-08 14:46:38.000000000 +0000
+++ fs-uae-arcade-2.9.6~dev/VERSION 2017-05-25 10:07:54.000000000 +0000
@@ -1 +1 @@
-2.9.5
+2.9.6dev