def _remove_crtdaemon(self):
     if self._check_crtdaemon_files:
         show_info('CLEANING CRT DAEMON...')
         os.system('sudo systemctl disable %s > /dev/null 2>&1' \
                   % SERVICE_FILE_NAME)
         os.system('sudo systemctl stop %s > /dev/null 2>&1' \
                   % SERVICE_FILE_NAME)
         os.system('sudo rm /etc/systemd/system/%s > /dev/null 2>&1' \
                   % SERVICE_FILE_NAME)
 def _restart_es(self):
     if check_process("emulationstatio"):
         commandline = "touch /tmp/es-restart "
         commandline += "&& pkill -f \"/opt/retropie"
         commandline += "/supplementary/.*/emulationstation([^.]|$)\""
         show_info("RESTARTING EMULATIONSTATION")
         os.system(commandline)
         time.sleep(2)
         sys.exit(1)
示例#3
0
 def configure(self):
     if self.m_sSystem == "daphne":
         self.m_lBinaryMasks = ["daphne"]
         self.m_lBinaryUntouchable = ["daphne"]
         FixDaphneControls(self.m_sSystem).fix()
     p_sSelectFreq = FrequencySelector(self.m_sFileName).get_frequency()
     self.m_sSystemFreq = self.m_sSystem
     if p_sSelectFreq == "50":
         self.m_sSystemFreq = self.m_sSystem + "50"
     show_info(self.m_lDaphneInfo)
 def configure(self):
     if self.m_sSystem == "scummvm":
         self.m_lBinaryMasks = ["scummvm"]
         self._scummvm_change_gfxmode()
         if not "+Start " in self.m_sGameName:
             self._scummvm_change_aspect()
     elif self.m_sSystem == "pc":
         self.m_lBinaryMasks = ["dosbox"]
     super(abandonware, self).configure()
     show_info("Better with keyboard and mouse")
示例#5
0
 def _show_remap(self):
     m_lInfoRemap = []
     for remap in self.m_lDaphneBTN:
         if int(remap[1]) != 0:
             try:
                 option = remap[0] + " -> " + remap[3]
                 m_lInfoRemap.append((option, "OK"))
             except:
                 pass
     show_info(m_lInfoRemap, self.m_sJoyName + " [js0]", 6000)
 def _install_crtdaemon(self):
     if self._check_crtdaemon_files:
         show_info('REINSTALLING CRT DAEMON...')
         os.system('sudo cp %s /etc/systemd/system/%s > /dev/null 2>&1' \
                   % (SERVICE_FILE, SERVICE_FILE_NAME))
         os.system('sudo chmod +x /etc/systemd/system/%s > /dev/null 2>&1' \
                   % SERVICE_FILE_NAME)
         os.system('sudo systemctl enable %s > /dev/null 2>&1' \
                   % SERVICE_FILE_NAME)
         os.system('sudo systemctl start %s > /dev/null 2>&1' \
                   % SERVICE_FILE_NAME)
示例#7
0
 def _restart_ES(self):
     """ Restart ES if it's running """
     sOutput = commands.getoutput('ps -A')
     if 'emulationstatio' in sOutput:
         show_info('RESTARTING EMULATIONSTATION')
         commandline = "touch /tmp/es-restart "
         commandline += "&& pkill -f \"/opt/retropie"
         commandline += "/supplementary/.*/emulationstation([^.]|$)\""
         os.system(commandline)
         os.system('clear')
         time.sleep(1.5)
示例#8
0
 def direct_start(self):
     """ launch_core: run emulator without runcommand!"""
     if "+Start " in self.m_sGameName and self.m_bFastBoot:
         show_info("LAUNCHING %s CONFIGURATOR!" % self.m_sSystem.upper())
         self.m_sCleanLaunch = "bash \"%s\"" % self.m_sFilePath
         self.m_sCleanLaunch += " >> %s 2>&1" % LOG_PATH
         commandline = self.m_sCleanLaunch
         if not os.path.exists("/tmp/retroarch"): os.system("mkdir /tmp/retroarch")
         self.m_oRunProcess = subprocess.Popen(commandline, shell=True, executable='/bin/bash')
         logging.info("INFO: Subprocess running: %s", commandline)
     else: super(abandonware, self).direct_start()
示例#9
0
 def _install_service(self):
     if self._check_service_files:
         show_info('STARTING SERVICE...')
         show_info('EMULATIONSTATION MAY REBOOT...')
         os.system('sudo cp %s /etc/systemd/system/%s > /dev/null 2>&1' %
                   (SERVICE_FILE, SERVICE_FILE_NAME))
         os.system('sudo chmod +x /etc/systemd/system/%s > /dev/null 2>&1' %
                   SERVICE_FILE_NAME)
         os.system('sudo systemctl enable %s > /dev/null 2>&1' %
                   SERVICE_FILE_NAME)
         os.system('sudo systemctl start %s > /dev/null 2>&1' %
                   SERVICE_FILE_NAME)
def quit_manager():
    clean()
    save_configuration()
    # save resolution change parameters
    if bChangeRes:
        oChangeRes = resolution_change(opt[0][2])
        oChangeRes.change()
    elif bChangeMode:
        show_info("APPLYING MODE")
        oApplyMode = center()
        oApplyMode.launch("force")
    sys.exit(0)
示例#11
0
    def _frontend_rotation(self):
        show_info("WAIT, PREPARING ROTATION...")
        # remove first all trigger files
        self.__clean()
        p_sFileTail = "_" + str(self.RES_Y) + "p"
        p_sTheme = None
        p_sIntro = None

        if self.iToMode == 0:
            p_sFileTail += "_0"
            p_sIntro = INTRO_VID0_FILE
            touch_file(ROTMODES_YOKO_FILE)
            os.system('sudo rm %s >> /dev/null 2>&1' % ESSYSTEMS_TEMP_FILE)
            os.system('sudo mv %s %s >> /dev/null 2>&1' %
                      (ESTHEMES_DIS_PATH, ES_THEMES_PRI_PATH))
            for theme in THEME_LIST:
                VTHEME270_DST_PATH = os.path.join(ES_CFG_PATH, theme)
                os.system('sudo rm -R %s >> /dev/null 2>&1' %
                          VTHEME270_DST_PATH)
        else:
            if not os.path.exists(ES_THEMES_SEC_PATH):
                os.system('mkdir %s >> /dev/null 2>&1' % ES_THEMES_SEC_PATH)
            os.system('cp %s %s >> /dev/null 2>&1' %
                      (ESSYSTEMS_VERT_FILE, ESSYSTEMS_TEMP_FILE))
            os.system('sudo mv %s %s >> /dev/null 2>&1' %
                      (ES_THEMES_PRI_PATH, ESTHEMES_DIS_PATH))
            for theme in THEME_LIST:
                VTHEME270_SRC_PATH = os.path.join(CRT_ES_RES_PATH, theme)
                os.system('cp -R %s %s >> /dev/null 2>&1' %
                          (VTHEME270_SRC_PATH, ES_THEMES_SEC_PATH))

            if self.iToMode == 90:
                p_sFileTail += "_1"
                p_sIntro = INTRO_VID1_FILE
                touch_file(ROTMODES_TATE1_FILE)
            elif self.iToMode == -90:
                p_sFileTail += "_3"
                p_sIntro = INTRO_VID3_FILE
                touch_file(ROTMODES_TATE3_FILE)

        modify_line(CRT_UTILITY_FILE, 'frontend_rotation',
                    'frontend_rotation %s' % self.iToMode)
        os.system('sudo cp %s %s >> /dev/null 2>&1' %
                  (p_sIntro, INTRO_VID_DEF_FILE))
        self._fix_aspect_ratio_images(p_sFileTail)
        self._fix_icons_image()
示例#12
0
 def _remove_service(self):
     if self._check_service_files and self.m_bServiceRun:
         show_info('STOPPING SERVICE...')
         os.system('sudo systemctl disable %s > /dev/null 2>&1' %
                   SERVICE_FILE_NAME)
         os.system('sudo systemctl stop %s > /dev/null 2>&1' %
                   SERVICE_FILE_NAME)
         os.system('sudo rm /etc/systemd/system/%s > /dev/null 2>&1' %
                   SERVICE_FILE_NAME)
         os.system('sudo umount -l /home/pi/RetroPie/roms > /dev/null 2>&1')
         os.system('sudo umount -l /home/pi/RetroPie/BIOS > /dev/null 2>&1')
         os.system(
             'sudo umount -l /opt/retropie/configs/all/emulationstation/gamelists > /dev/null 2>&1'
         )
         self.__clean()  # clean trigger files
         if self.m_bUSBMounted:
             self._restart_ES()
 def get_frequency(self):
     # first i try to find an allowed freq
     self.m_sSelectFreq = ini_get(CRT_UTILITY_FILE, "freq_selector")
     if self.m_sSelectFreq in ALLOWED_FREQS:
         logging.info("Frequency selector always %sHz" % self.m_sSelectFreq)
         if self.m_sSelectFreq == "50":
             AutoSelection = "FORCED TO 50Hz / PAL"
         elif self.m_sSelectFreq == "60":
             AutoSelection = "FORCED TO 60Hz / NTSC"
         show_info(AutoSelection)
     elif self.m_sSelectFreq == "100":
         logging.info("Frequency selector mode auto")
         self.m_sSelectFreq = self.frecuency_auto()
     else:
         logging.info("Frequency selector mode manual")
         self.m_sSelectFreq = self.frequency_manual()
     return self.m_sSelectFreq
 def frecuency_auto(self):
     bFreqFound = False
     sFrequency = self.m_oFreqDB.find(self.m_sCompactedName)
     if sFrequency:
         bFreqFound = True
     else:
         sFrequency = self.frequency_by_name()
         if not sFrequency:
             sFrequency = self.frequency_manual()
         else:
             bFreqFound = True
     if bFreqFound:
         if sFrequency == "50":
             AutoSelection = "AUTO: 50Hz / PAL"
         elif sFrequency == "60":
             AutoSelection = "AUTO: 60Hz / NTSC"
         show_info(AutoSelection)
     return sFrequency
 def frecuency_auto(self):
     bFreqFound = False
     sFrequency = self.m_oFreqDB.find(self.m_sCompactedName)
     if sFrequency:
         bFreqFound = True
     else:
         sFrequency = self.frequency_by_name()
         if not sFrequency:
             sFrequency = self.frequency_manual()
         else:
             bFreqFound = True
     if bFreqFound:
         if sFrequency == "50":
             AutoSelection = "AUTO: 50Hz / PAL"
         elif sFrequency == "60":
             AutoSelection = "AUTO: 60Hz / NTSC"
         if ini_get(CRT_UTILITY_FILE, "autosel_info").lower() != "false":
             if not self.m_bFastBoot: show_info(AutoSelection)
     return sFrequency
示例#16
0
 def fix(self):
     if self._initialize_pygame() and self._remap_option_menu():
         self.m_sCfgFile = os.path.join(JOYCONFIG_PATH,
                                        self.m_sJoyName + '.cfg')
         if os.path.exists(self.m_sCfgFile) and \
            os.path.exists(self.DAPHNE_CFG_FILE):
             logging.info("INFO: Found configuration file for " \
                          "joystick 0: \"%s\"" % self.m_sCfgFile)
             logging.info("INFO: Found daphne configuration file: " \
                          "\"%s\"" % self.DAPHNE_CFG_FILE)
             self._get_joy_cfg()
             self._fix_daphne_cfg()
             self.__clean()
             self._show_remap()
             return True
         if not os.path.exists(self.m_sCfgFile):
             logging.info("WARNING: NOT found configuration file for " \
                          "joystick 0: \"%s\"" % self.m_sCfgFile)
             show_info("ES CONFIG FOR JOYSTICK NOT FOUND", "WARNING")
         else:
             logging.info("WARNING: NOT found daphne configuration file: " \
                          "\"%s\"" % self.DAPHNE_CFG_FILE)
             show_info("DAPHNE CONFIG FILE NOT FOUND", "WARNING")
     return False
 def _restart(self):
     """ Restart system or reboot ES if needed """
     commandline = ""
     if not self.m_bUploadCFG:
         logging.info('INFO: NO changes in /boot/config.txt; ' + \
                      'no reboot needed')
         # check if ES must reboot
         if self.m_bRebootES and check_process("emulationstatio"):
             show_info('CLEANING KEYBOARD CONFIG', 2000)
             show_info('EMULATIONSTATION WILL RESTART NOW')
             commandline = "touch /tmp/es-restart "
             commandline += "&& pkill -f \"/opt/retropie"
             commandline += "/supplementary/.*/emulationstation([^.]|$)\""
             os.system(commandline)
             time.sleep(1)
     else:
         commandline = 'sudo reboot now'
         show_info(self.m_lInfoReboot)
         os.system(commandline)
     sys.exit(0)
def hash_check(p_sFile):
    """ 
    Compare saved hash of last es_system.cfg changes and 
    compare with current.
    """
    sHashLast = LAST_HASH
    sHashFile = md5_file(p_sFile)
    if sHashLast != sHashFile:
        return False
    return True


def update_last_hash(p_sFile):
    """ Update last hash if any change """
    sHashFile = md5_file(p_sFile)
    modify_line(CRT_ES_SYSTEMDB_FILE, "LAST_HASH",
                "LAST_HASH = \"%s\"" % sHashFile)


""" main program """
# only analize or change file if hash is different
if not hash_check(ES_SYSTEMS_PRI_FILE):
    check_xml_file(ES_SYSTEMS_PRI_FILE)
    check_miss_systems(ES_SYSTEMS_PRI_FILE)
    update_last_hash(ES_SYSTEMS_PRI_FILE)

# force a reboot if any change is detected
if bReboot:
    show_info(lSysInfo, lSysTit, 13000)
    os.system('reboot')
 def runcommand_start(self):
     """ launch_core: run emulator!"""
     if "+Start " in self.m_sGameName:
         show_info("Launching %s Configurator!" % self.m_sSystem.upper())
     super(abandonware, self).runcommand_start()
示例#20
0
 def run(self):
     show_info('PLEASE WAIT...')
     sChoice = menu_options(self.m_lOptAuto, self.m_sTitAuto)
     self._automount_act(sChoice)
     sys.exit(0)
 def runcommand_start(self):
     """ launch_core: run emulator!"""
     if "+Start " in self.m_sGameName:
         show_info("LAUNCHING %s CONFIGURATOR!" % self.m_sSystem.upper())
     super(abandonware, self).runcommand_start()
示例#22
0
 def eject_usb(self):
     show_info('EJECTING USB STORAGE...')
     show_info('RESTARTING EMULATIONSTATION')
     os.system('sudo umount %s > /dev/null 2>&1' % self.m_sMountedPath[0])
     while not os.path.exists(TRG_UMNT_FILE):
         pass
 def run(self):
     show_info('PLEASE WAIT...')
     self._check_if_first_boot()
     self._loop()
示例#24
0
 def _restart(self):
     """ Restart system """
     show_info('SYSTEM WILL REBOOT NOW')
     os.system('sudo reboot now')
 def change(self):
     show_info("WAIT, PREPARING RESOLUTION CHANGE")
     self._prepare_save_configuration()
     self._change_resolution()
     self._apply_resolution()
import os, sys, traceback
from launcher_module.core_paths import TMP_LAUNCHER_PATH
from launcher_module.utils import something_is_bad, plugin_list, plugin_load, show_info

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MODULES_PATH = os.path.join(BASE_DIR, "launcher_module/plugins")

EXCEPTION_LOG = os.path.join(TMP_LAUNCHER_PATH, "backtrace.log")

if __name__ == '__main__':
    try:
        sSystem = sys.argv[2]
        bSystemFound = False
        for pl in plugin_list(MODULES_PATH):
            # print("Loading plugin " + pl["name"])
            launcher = plugin_load(pl)
            if sSystem in launcher.get_system_list():
                bSystemFound = True
                launcher(sys.argv[1], sys.argv[2], sys.argv[3])
        if not bSystemFound:
            #something_is_bad("ERROR - System not supported!", sSystem)
            show_info("SYSTEM [%s] NOT SUPPORTED!" % sSystem, "", 7000)
    # TODO: kill emulator ?
    except (IndexError):
        show_info("NO GAME TO LAUNCH OR NO EMULATOR!", "", 7000)
        #something_is_bad("ERROR - No game to launch or no emulator!", "")
    except Exception as e:
        with open(EXCEPTION_LOG, 'a') as f:
            f.write(str(e))
            f.write(traceback.format_exc())