RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Updated EmulationStation for Windows

    Scheduled Pinned Locked Moved Projects and Themes
    emulationstatiowindows
    741 Posts 97 Posters 566.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      maxiducoli
      last edited by

      @f-caruso

      Hello, how are you? I wanted to ask you if you have any idea how, from the es_input.cfg file, to be able to transcribe the different emulators other than those of Retroarch. Because for example Cemu or PCSX2 have an INI file but the values ​​that go in the X and Y do not understand how to transcribe them. Do you know anything about the subject? Would you have an email where you can conttact you for these matters? Thank you!

      1 Reply Last reply Reply Quote 0
      • f.carusoF
        f.caruso @dukeblooders
        last edited by

        @dukeblooders

        Can we use a folder path for {random:} ? Or what game properties can be used ? I tried to add some properties in my gamelist, but I doesn't work.

        No {random:image}, {random:thumbnail}, {random:marquee} only. It takes random scrapped resources only.

        I saw a delay property for videos, can we use a similar property for images ?

        No...

        @maxiducoli

        No. I tried to do that in a CEmu launcher written in c#.
        But it's complex code, and it's very far from perfect.
        I didn't try with pcsx2.

        Also, you can find me on discord. The easiest one is Batocera's Discord...

        M dukebloodersD 4 Replies Last reply Reply Quote 0
        • M
          maxiducoli @f.caruso
          last edited by

          @f-caruso
          In Pcsx2 Just copy a already configured xnput INI and works perfecto. The problem is dinput, cause change on diferents controllers

          1 Reply Last reply Reply Quote 0
          • dukebloodersD
            dukeblooders @f.caruso
            last edited by

            @f-caruso
            OK I managed to make it work, thanks.

            1 Reply Last reply Reply Quote 0
            • M
              maxiducoli @f.caruso
              last edited by

              @f-caruso

              Can you send me the source code of Cemu Launcher and maybe i could help or do some executable for ous.
              i have Discord but i dont know how to use jja my user is maxiducoli too.

              I see PCSX2 source and have a plugin named OnePAD. This plugin use gamecontrollerdb.txt and is like joysticks out the box of batocera or autoconfig of RetroArch. Can you compile this source for windows? Just the DLL. I can´t undertand too much of C++ and my HDD its only os 160GB and Visual Studio is too large for all my programs + Visual Studio Community. I can´t install for now.

              See that.

              /* OnePAD - author: arcum42(@gmail.com)

              • Copyright (C) 2009
              • Based on ZeroPAD, author zerofrog@gmail.com
              • Copyright (C) 2006-2007
              • This program is free software; you can redistribute it and/or modify
              • it under the terms of the GNU General Public License as published by
              • the Free Software Foundation; either version 2 of the License, or
              • (at your option) any later version.
              • This program is distributed in the hope that it will be useful,
              • but WITHOUT ANY WARRANTY; without even the implied warranty of
              • MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
              • GNU General Public License for more details.
              • You should have received a copy of the GNU General Public License
              • along with this program; if not, write to the Free Software
              • Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
                */

              #include "joystick.h"
              #include "resources.h"
              #include <signal.h> // sigaction

              //////////////////////////
              // Joystick definitions //
              //////////////////////////

              // opens handles to all possible joysticks
              void JoystickInfo::EnumerateJoysticks(std::vector<std::unique_ptr<GamePad>> &vjoysticks)
              {
              uint32_t flag = SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_EVENTS | SDL_INIT_GAMECONTROLLER;

              if ((SDL_WasInit(0) & flag) != flag) {
                  // Tell SDL to catch event even if the windows isn't focussed
                  SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1");
              
                  if (SDL_Init(flag) < 0)
                      return;
              
                  // WTF! Give me back the control of my system
                  struct sigaction action = {};
                  action.sa_handler = SIG_DFL;
                  sigaction(SIGINT, &action, nullptr);
                  sigaction(SIGTERM, &action, nullptr);
              
                  SDL_JoystickEventState(SDL_QUERY);
                  SDL_GameControllerEventState(SDL_QUERY);
                  SDL_EventState(SDL_CONTROLLERDEVICEADDED, SDL_ENABLE);
                  SDL_EventState(SDL_CONTROLLERDEVICEREMOVED, SDL_ENABLE);
              
                  { // Support as much Joystick as possible
                      GBytes *bytes = g_resource_lookup_data(onepad_res_get_resource(), "/onepad/res/game_controller_db.txt", G_RESOURCE_LOOKUP_FLAGS_NONE, nullptr);
              
                      size_t size = 0;
                      // SDL forget to add const for SDL_RWFromMem API...
                      void *data = const_cast<void *>(g_bytes_get_data(bytes, &size));
              
                      SDL_GameControllerAddMappingsFromRW(SDL_RWFromMem(data, size), 1);
              
                      g_bytes_unref(bytes);
              
                      // Add user mapping too
                      for (auto const &map : g_conf.sdl2_mapping)
                          SDL_GameControllerAddMapping(map.c_str());
                  }
              }
              
              vjoysticks.clear();
              
              for (int i = 0; i < SDL_NumJoysticks(); ++i) {
                  vjoysticks.push_back(std::unique_ptr<GamePad>(new JoystickInfo(i)));
                  // Something goes wrong in the init, let's drop it
                  if (!vjoysticks.back()->IsProperlyInitialized())
                      vjoysticks.pop_back();
              }
              

              }

              void JoystickInfo::Rumble(unsigned type, unsigned pad)
              {
              if (type >= m_effects_id.size())
              return;

              if (!(g_conf.pad_options[pad].forcefeedback))
                  return;
              
              if (m_haptic == nullptr)
                  return;
              
              int id = m_effects_id[type];
              if (SDL_HapticRunEffect(m_haptic, id, 1) != 0) {
                  fprintf(stderr, "ERROR: Effect is not working! %s, id is %d\n", SDL_GetError(), id);
              }
              

              }

              JoystickInfo::~JoystickInfo()
              {
              // Haptic must be closed before the joystick
              if (m_haptic != nullptr) {
              for (const auto &eid : m_effects_id) {
              if (eid >= 0)
              SDL_HapticDestroyEffect(m_haptic, eid);
              }

                  SDL_HapticClose(m_haptic);
              }
              
              if (m_controller != nullptr) {
              

              #if SDL_MINOR_VERSION >= 4
              // Version before 2.0.4 are bugged, JoystickClose crashes randomly
              // Note: GameControllerClose calls JoystickClose)
              SDL_GameControllerClose(m_controller);
              #endif
              }
              }

              JoystickInfo::JoystickInfo(int id)
              : GamePad()
              , m_controller(nullptr)
              , m_haptic(nullptr)
              , m_unique_id(0)
              {
              SDL_Joystick *joy = nullptr;
              m_effects_id.fill(-1);
              // Values are hardcoded currently but it could be later extended to allow remapping of the buttons
              m_pad_to_sdl[PAD_L2] = SDL_CONTROLLER_AXIS_TRIGGERLEFT;
              m_pad_to_sdl[PAD_R2] = SDL_CONTROLLER_AXIS_TRIGGERRIGHT;
              m_pad_to_sdl[PAD_L1] = SDL_CONTROLLER_BUTTON_LEFTSHOULDER;
              m_pad_to_sdl[PAD_R1] = SDL_CONTROLLER_BUTTON_RIGHTSHOULDER;
              m_pad_to_sdl[PAD_TRIANGLE] = SDL_CONTROLLER_BUTTON_Y;
              m_pad_to_sdl[PAD_CIRCLE] = SDL_CONTROLLER_BUTTON_B;
              m_pad_to_sdl[PAD_CROSS] = SDL_CONTROLLER_BUTTON_A;
              m_pad_to_sdl[PAD_SQUARE] = SDL_CONTROLLER_BUTTON_X;
              m_pad_to_sdl[PAD_SELECT] = SDL_CONTROLLER_BUTTON_BACK;
              m_pad_to_sdl[PAD_L3] = SDL_CONTROLLER_BUTTON_LEFTSTICK;
              m_pad_to_sdl[PAD_R3] = SDL_CONTROLLER_BUTTON_RIGHTSTICK;
              m_pad_to_sdl[PAD_START] = SDL_CONTROLLER_BUTTON_START;
              m_pad_to_sdl[PAD_UP] = SDL_CONTROLLER_BUTTON_DPAD_UP;
              m_pad_to_sdl[PAD_RIGHT] = SDL_CONTROLLER_BUTTON_DPAD_RIGHT;
              m_pad_to_sdl[PAD_DOWN] = SDL_CONTROLLER_BUTTON_DPAD_DOWN;
              m_pad_to_sdl[PAD_LEFT] = SDL_CONTROLLER_BUTTON_DPAD_LEFT;
              m_pad_to_sdl[PAD_L_UP] = SDL_CONTROLLER_AXIS_LEFTY;
              m_pad_to_sdl[PAD_L_RIGHT] = SDL_CONTROLLER_AXIS_LEFTX;
              m_pad_to_sdl[PAD_L_DOWN] = SDL_CONTROLLER_AXIS_LEFTY;
              m_pad_to_sdl[PAD_L_LEFT] = SDL_CONTROLLER_AXIS_LEFTX;
              m_pad_to_sdl[PAD_R_UP] = SDL_CONTROLLER_AXIS_RIGHTY;
              m_pad_to_sdl[PAD_R_RIGHT] = SDL_CONTROLLER_AXIS_RIGHTX;
              m_pad_to_sdl[PAD_R_DOWN] = SDL_CONTROLLER_AXIS_RIGHTY;
              m_pad_to_sdl[PAD_R_LEFT] = SDL_CONTROLLER_AXIS_RIGHTX;

              if (SDL_IsGameController(id)) {
                  m_controller = SDL_GameControllerOpen(id);
                  joy = SDL_GameControllerGetJoystick(m_controller);
              } else {
                  joy = SDL_JoystickOpen(id);
              }
              
              if (joy == nullptr) {
                  fprintf(stderr, "onepad:failed to open joystick %d\n", id);
                  return;
              }
              
              // Collect Device Information
              char guid[64];
              SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joy), guid, 64);
              const char *devname = SDL_JoystickNameForIndex(id);
              
              if (m_controller == nullptr) {
                  fprintf(stderr, "onepad: Joystick (%s,GUID:%s) isn't yet supported by the SDL2 game controller API\n"
                                  "Fortunately you can use AntiMicro (https://github.com/AntiMicro/antimicro) or Steam to configure your joystick\n"
                                  "The mapping can be stored in OnePAD2.ini as 'SDL2 = <...mapping description...>'\n"
                                  "Please report it to us (https://github.com/PCSX2/pcsx2/issues) so we can add your joystick to our internal database.",
                          devname, guid);
              

              #if SDL_MINOR_VERSION >= 4 // Version before 2.0.4 are bugged, JoystickClose crashes randomly
              SDL_JoystickClose(joy);
              #endif

                  return;
              }
              
              std::hash<std::string> hash_me;
              m_unique_id = hash_me(std::string(guid));
              
              // Default haptic effect
              SDL_HapticEffect effects[NB_EFFECT];
              for (int i = 0; i < NB_EFFECT; i++) {
                  SDL_HapticEffect effect;
                  memset(&effect, 0, sizeof(SDL_HapticEffect)); // 0 is safe default
                  SDL_HapticDirection direction;
                  direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding.
                  direction.dir[0] = 18000;
                  effect.periodic.direction = direction;
                  effect.periodic.period = 10;
                  effect.periodic.magnitude = (Sint16)(g_conf.get_ff_intensity()); // Effect at maximum instensity
                  effect.periodic.offset = 0;
                  effect.periodic.phase = 18000;
                  effect.periodic.length = 125; // 125ms feels quite near to original
                  effect.periodic.delay = 0;
                  effect.periodic.attack_length = 0;
                  /* Sine and triangle are quite probably the best, don't change that lightly and if you do
                   * keep effects ordered by type
                   */
                  if (i == 0) {
                      /* Effect for small motor */
                      /* Sine seems to be the only effect making little motor from DS3/4 react
                       * Intensity has pretty much no effect either(which is coherent with what is explain in hid_sony driver
                       */
                      effect.type = SDL_HAPTIC_SINE;
                  } else {
                      /** Effect for big motor **/
                      effect.type = SDL_HAPTIC_TRIANGLE;
                  }
              
                  effects[i] = effect;
              }
              
              if (SDL_JoystickIsHaptic(joy)) {
                  m_haptic = SDL_HapticOpenFromJoystick(joy);
              
                  for (auto &eid : m_effects_id) {
                      eid = SDL_HapticNewEffect(m_haptic, &effects[0]);
                      if (eid < 0) {
                          fprintf(stderr, "ERROR: Effect is not uploaded! %s\n", SDL_GetError());
                          return;
                      }
                  }
              }
              
              fprintf(stdout, "onepad: controller (%s) detected%s, GUID:%s\n",
                      devname, m_haptic ? " with rumble support" : "", guid);
              
              m_no_error = true;
              

              }

              const char *JoystickInfo::GetName()
              {
              return SDL_JoystickName(SDL_GameControllerGetJoystick(m_controller));
              }

              size_t JoystickInfo::GetUniqueIdentifier()
              {
              return m_unique_id;
              }

              bool JoystickInfo::TestForce(float strength = 0.60)
              {
              // This code just use standard rumble to check that SDL handles the pad correctly! --3kinox
              if (m_haptic == nullptr)
              return false; // Otherwise, core dump!

              SDL_HapticRumbleInit(m_haptic);
              
              // Make the haptic pad rumble 60% strength for half a second, shoudld be enough for user to see if it works or not
              if (SDL_HapticRumblePlay(m_haptic, strength, 400) != 0) {
                  fprintf(stderr, "ERROR: Rumble is not working! %s\n", SDL_GetError());
                  return false;
              }
              
              return true;
              

              }

              int JoystickInfo::GetInput(gamePadValues input)
              {
              float k = g_conf.get_sensibility() / 100.0; // convert sensibility to float

              // Handle analog inputs which range from -32k to +32k. Range conversion is handled later in the controller
              if (IsAnalogKey(input)) {
                  int value = SDL_GameControllerGetAxis(m_controller, (SDL_GameControllerAxis)m_pad_to_sdl[input]);
                  value *= k;
                  return (abs(value) > m_deadzone) ? value : 0;
              }
              
              // Handle triggers which range from 0 to +32k. They must be converted to 0-255 range
              if (input == PAD_L2 || input == PAD_R2) {
                  int value = SDL_GameControllerGetAxis(m_controller, (SDL_GameControllerAxis)m_pad_to_sdl[input]);
                  return (value > m_deadzone) ? value / 128 : 0;
              }
              
              // Remain buttons
              int value = SDL_GameControllerGetButton(m_controller, (SDL_GameControllerButton)m_pad_to_sdl[input]);
              return value ? 0xFF : 0; // Max pressure
              

              }

              void JoystickInfo::UpdateGamePadState()
              {
              SDL_GameControllerUpdate();
              }

              SDL and load allmost all joysticks.

              I hope you can understandme.

              Bye!

              1 Reply Last reply Reply Quote 0
              • M
                maxiducoli @f.caruso
                last edited by

                @f-caruso

                This is the Xinput Lillypad.ini CFG for ALL Xinput controllers (if you install SCP Toolkit you can use every controller for PCSX2 with out config the buttons.

                M 1 Reply Last reply Reply Quote 0
                • M
                  maxiducoli @maxiducoli
                  last edited by

                  @maxiducoli said in Updated EmulationStation for Windows:

                  @f-caruso

                  This is the Xinput Lillypad.ini CFG for ALL Xinput controllers (if you install SCP Toolkit you can use every controller for PCSX2 with out config the buttons.

                  [General Settings]

                  Last Config Path=inis

                  Last Config Name=LilyPad.lily

                  Force Cursor Hide=0

                  Mouse Unfocus=1

                  Background=1

                  Multiple Bindings=0

                  DirectInput Game Devices=1

                  XInput=1

                  DualShock 3=0

                  Multitap 1=0

                  Multitap 2=0

                  Escape Fullscreen Hack=0

                  Disable Screen Saver=0

                  Logging=0

                  Save State in Title=0

                  GH2=0

                  Turbo Key Hack=0

                  Vista Volume=1

                  Close Hacks=0

                  Keyboard Mode=2

                  Mouse Mode=0

                  Volume=100

                  [Pad 0 0]

                  Mode=1

                  Auto Analog=0

                  [Pad 0 1]

                  Mode=1

                  Auto Analog=0

                  [Pad 0 2]

                  Mode=1

                  Auto Analog=0

                  [Pad 0 3]

                  Mode=1

                  Auto Analog=0

                  [Pad 1 0]

                  Mode=1

                  Auto Analog=0

                  [Pad 1 1]

                  Mode=1

                  Auto Analog=0

                  [Pad 1 2]

                  Mode=1

                  Auto Analog=0

                  [Pad 1 3]

                  Mode=1

                  Auto Analog=0

                  [Device 0]

                  Display Name=XInput Pad 0

                  Instance ID=XInput Pad 0

                  API=4

                  Type=3

                  Binding 0=0x00040000, 0, 20, 65536, 0, 0, 0

                  Binding 1=0x00040001, 0, 22, 65536, 0, 0, 0

                  Binding 2=0x00040002, 0, 23, 65536, 0, 0, 0

                  Binding 3=0x00040003, 0, 21, 65536, 0, 0, 0

                  Binding 4=0x00040004, 0, 19, 65536, 0, 0, 0

                  Binding 5=0x00040005, 0, 16, 65536, 0, 0, 0

                  Binding 6=0x00040006, 0, 17, 65536, 0, 0, 0

                  Binding 7=0x00040007, 0, 18, 65536, 0, 0, 0

                  Binding 8=0x00040008, 0, 26, 65536, 0, 0, 0

                  Binding 9=0x00040009, 0, 27, 65536, 0, 0, 0

                  Binding 10=0x0004000C, 0, 30, 65536, 0, 0, 0

                  Binding 11=0x0004000D, 0, 29, 65536, 0, 0, 0

                  Binding 12=0x0004000E, 0, 31, 65536, 0, 0, 0

                  Binding 13=0x0004000F, 0, 28, 65536, 0, 0, 0

                  Binding 14=0x00200010, 0, 24, 65536, 0, 0, 1

                  Binding 15=0x00200011, 0, 25, 65536, 0, 0, 1

                  Binding 16=0x01020012, 0, 33, 87183, 0, 0, 13172

                  Binding 17=0x02020012, 0, 35, 87183, 0, 0, 13172

                  Binding 18=0x01020013, 0, 32, 87183, 0, 0, 13172

                  Binding 19=0x02020013, 0, 34, 87183, 0, 0, 13172

                  Binding 20=0x01020014, 0, 37, 87183, 0, 0, 13172

                  Binding 21=0x02020014, 0, 39, 87183, 0, 0, 13172

                  Binding 22=0x01020015, 0, 36, 87183, 0, 0, 13172

                  Binding 23=0x02020015, 0, 38, 87183, 0, 0, 13172

                  FF Binding 0=Constant 0, 0, 0, 0, 65536, 1, 0

                  FF Binding 1=Constant 0, 1, 0, 0, 0, 1, 65536

                  [Device 1]

                  Display Name=XInput Pad 1

                  Instance ID=XInput Pad 1

                  API=4

                  Type=3

                  Binding 0=0x00040000, 1, 20, 65536, 0, 0, 0

                  Binding 1=0x00040001, 1, 22, 65536, 0, 0, 0

                  Binding 2=0x00040002, 1, 23, 65536, 0, 0, 0

                  Binding 3=0x00040003, 1, 21, 65536, 0, 0, 0

                  Binding 4=0x00040004, 1, 19, 65536, 0, 0, 0

                  Binding 5=0x00040005, 1, 16, 65536, 0, 0, 0

                  Binding 6=0x00040006, 1, 17, 65536, 0, 0, 0

                  Binding 7=0x00040007, 1, 18, 65536, 0, 0, 0

                  Binding 8=0x00040008, 1, 26, 65536, 0, 0, 0

                  Binding 9=0x00040009, 1, 27, 65536, 0, 0, 0

                  Binding 10=0x0004000C, 1, 30, 65536, 0, 0, 0

                  Binding 11=0x0004000D, 1, 29, 65536, 0, 0, 0

                  Binding 12=0x0004000E, 1, 31, 65536, 0, 0, 0

                  Binding 13=0x0004000F, 1, 28, 65536, 0, 0, 0

                  Binding 14=0x00200010, 1, 24, 65536, 0, 0, 1

                  Binding 15=0x00200011, 1, 25, 65536, 0, 0, 1

                  Binding 16=0x01020012, 1, 33, 87183, 0, 0, 13172

                  Binding 17=0x02020012, 1, 35, 87183, 0, 0, 13172

                  Binding 18=0x01020013, 1, 32, 87183, 0, 0, 13172

                  Binding 19=0x02020013, 1, 34, 87183, 0, 0, 13172

                  Binding 20=0x01020014, 1, 37, 87183, 0, 0, 13172

                  Binding 21=0x02020014, 1, 39, 87183, 0, 0, 13172

                  Binding 22=0x01020015, 1, 36, 87183, 0, 0, 13172

                  Binding 23=0x02020015, 1, 38, 87183, 0, 0, 13172

                  FF Binding 0=Constant 1, 0, 0, 0, 65536, 1, 0

                  FF Binding 1=Constant 1, 1, 0, 0, 0, 1, 65536

                  [Device 12]

                  Display Name=XInput Pad 2

                  Instance ID=XInput Pad 2

                  API=4

                  Type=3

                  [Device 13]

                  Display Name=XInput Pad 3

                  Instance ID=XInput Pad 3

                  API=4

                  Type=3

                  f.carusoF 1 Reply Last reply Reply Quote 0
                  • f.carusoF
                    f.caruso @maxiducoli
                    last edited by

                    @maxiducoli
                    What do you want me to do with all this ? It's not really related to ES.
                    Plus, it's not the good place for that kind of exchanges. Find me on Discord.
                    I can't see you on any server I'm in. Please, name servers you are in so I can find you.

                    1 Reply Last reply Reply Quote 0
                    • P
                      porterballs
                      last edited by

                      @f-caruso hi was just wondering if you will update the gamesdb scraper at some point, I want to use your screenscraper one but I cant choose to have only 2d boxes! Thanks

                      f.carusoF 1 Reply Last reply Reply Quote 0
                      • f.carusoF
                        f.caruso @porterballs
                        last edited by

                        @porterballs said in Updated EmulationStation for Windows:

                        gamesdb

                        Done + Added ability to use Box as image for screenscraper. You can download the latest version.

                        P 1 Reply Last reply Reply Quote 2
                        • P
                          porterballs @f.caruso
                          last edited by

                          @f-caruso thank you much appreciated :)

                          1 Reply Last reply Reply Quote 0
                          • CarissaIsWierdC
                            CarissaIsWierd
                            last edited by

                            @f-caruso I had arrows before (see here) that now show as question marks after the 'Unicode Strings' update :/

                            f.carusoF 1 Reply Last reply Reply Quote 0
                            • f.carusoF
                              f.caruso @CarissaIsWierd
                              last edited by f.caruso

                              @CarissaIsWierd The version of your theme I have does'nt have all these options, so I can't test what you did...
                              EDIT : Found & fixed

                              1 Reply Last reply Reply Quote 1
                              • CarissaIsWierdC
                                CarissaIsWierd
                                last edited by

                                @f-caruso Did you do something to the way "folderImage" & "gameImage" are displayed in the past month? If you check my theme I shared with you, folders and games without images show up like this, when before they used minSize like games with images do. Do I need to add something different to fix it?

                                f.carusoF 1 Reply Last reply Reply Quote 0
                                • f.carusoF
                                  f.caruso @CarissaIsWierd
                                  last edited by

                                  @CarissaIsWierd Check the new release it should solve your case.

                                  S 1 Reply Last reply Reply Quote 1
                                  • PittStoneP
                                    PittStone
                                    last edited by

                                    @f-caruso @jdrassa Will it be possible to use animated Gifs for the Covers? Not only .png or .jpg. It would be Awesome to have a Animated Cover like this: Animated Cover

                                    mituM 1 Reply Last reply Reply Quote 0
                                    • mituM
                                      mitu Global Moderator @PittStone
                                      last edited by mitu

                                      @PittStone said in Updated EmulationStation for Windows:

                                      It would be Awesome to have a Animated Cover like this: Animated Cover

                                      That's not a GIF, is a video file. You can add it as video in ES.

                                      PittStoneP 1 Reply Last reply Reply Quote 0
                                      • PittStoneP
                                        PittStone @mitu
                                        last edited by

                                        @mitu Hi, nope i right click on it and JDownloader downloaded it as a .gif! It doesn't matter if this example is a video or a gif! My question is whether it will even be possible to use this as an animated gif.

                                        1 Reply Last reply Reply Quote 0
                                        • mituM
                                          mitu Global Moderator
                                          last edited by

                                          @PittStone said in Updated EmulationStation for Windows:

                                          Hi, nope i right click on it and JDownloader downloaded it as a .gif

                                          Imgur allows you to upload short video files. The actual video behind that it's an MP4 video - https://i.imgur.com/193xjy7.mp4.

                                          My question is whether it will even be possible to use this as an animated gif.

                                          I don't think it's possible without adding a GIF decoder (not included right now in EmulationStation) and playing it as a video in ES - at which point you're better just adding it as video.

                                          PittStoneP 1 Reply Last reply Reply Quote 0
                                          • PittStoneP
                                            PittStone @mitu
                                            last edited by PittStone

                                            @mitu If you look at my update from the Magazine Theme, you can see that the cover is permanently displayed on the left and the videosnap is also played on the right.

                                            But it is possible with a gif decoder. Then something should be in a next update. :D
                                            It would be very nice to have this for a Raspberry pi 3, too.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.