Recalbox Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • recalbox.com
    • Gitlab repository
    • Documentation
    • Discord

    Unsolved Rotation de l'écran à 90°

    Emulateurs Arcade/PC/Console
    rotation lécran 90°
    9
    21
    5129
    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.
    • babastorm
      babastorm last edited by

      Salut @acris !
      L'option est dans retroarch ? j'ai regardé tout les parametres vidéo de retroarch, j'ai rien qui s'appele TATE... c'est propre à Mame ? (on peut pas l'avoir sur d'autres émulateurs ?)

      En fait, c'est pour ma c**ktail, j'ai modifié mon config.txt dans boot pour faire une rotation de l'écran à 90° afin d'avoir les menus recalbox vers le joueur 1

      Ensuite, j'ai installé un shader mirroir, pour avoir les jeux de tous les émulateurs en mode..mirroir, mais celui-ci provoquant à son tour une rotation écran à 90°, ben ça annule ma rotation et mes jeux ne sont plus orienté vers les joueurs...
      Du coup, si on peut dire à retroarch (pas que Mame, mais tous les emulateurs) de faire une rotation 90°, je retrouverais mes jeux dans le bon sens 😉 !
      Je pock @Bkg2k aussi, on sait jamais 😄 !

      1 Reply Last reply Reply Quote 0
      • acris
        acris last edited by acris

        dans quick menu pour mame.
        https://docs.libretro.com/library/mame_2003/
        https://docs.libretro.com/library/mame2003_plus/

        attention l'option n'est pas présente dans tous les cores de mémoire

        GDEHON 1 Reply Last reply Reply Quote 0
        • babastorm
          babastorm last edited by

          @acris
          Mince !
          Bon, j'ai une autre piste : Le shader est peut-être modifiable pour l'empécher de tourner de 90° ?
          Je poste le code ici, on sait jamais si quelque chose tape dans l'oeil d'un codeur :

          mirror.glslp :

          shaders = "1"
          shader0 = "shaders_glsl/mirror/c**ktail_mirror.glsl"
          filter_linear0 = "false"
          wrap_mode0 = "clamp_to_border"
          mipmap_input0 = "false"
          alias0 = ""
          float_framebuffer0 = "false"
          srgb_framebuffer0 = "false"
          parameters = "height;width;location_y;location_x;ZOOM"
          height = "-1.145000"
          width = "1.750000"
          location_y = "0.800000"
          location_x = "-0.500000"
          ZOOM = "1.000000"

          c**ktail_mirror.glsl :
          #pragma parameter height "Image Height" -1.145 -6.0 6.0 0.01
          #pragma parameter width "Image Width" 2.0 0.0 10.0 0.05
          #pragma parameter location_y "Image Location Y" 0.75 -4.0 4.0 0.005
          #pragma parameter location_x "Image Location X" -0.5 -4.0 4.0 0.005
          #pragma parameter ZOOM "Image Zoom" 1.0 0.0 2.0 0.005

          #if defined(VERTEX)

          #if VERSION >= 130
          #define COMPAT_VARYING out
          #define COMPAT_ATTRIBUTE in
          #define COMPAT_TEXTURE texture
          #else
          #define COMPAT_VARYING varying
          #define COMPAT_ATTRIBUTE attribute
          #define COMPAT_TEXTURE texture2D
          #endif

          #ifdef GL_ES
          #define COMPAT_PRECISION mediump
          #else
          #define COMPAT_PRECISION
          #endif
          COMPAT_VARYING vec4 _color1;
          COMPAT_VARYING float _frame_rotation;
          struct input_dummy {
          vec2 _video_size;
          vec2 _texture_size;
          vec2 _output_dummy_size;
          float _frame_count;
          float _frame_direction;
          float _frame_rotation;
          };
          struct output_dummy {
          vec4 _color1;
          };
          vec4 _oPosition1;
          vec4 _r0020;
          vec4 _r0022;
          vec2 _r0024;
          vec2 _r0026;
          COMPAT_ATTRIBUTE vec4 VertexCoord;
          COMPAT_ATTRIBUTE vec4 COLOR;
          COMPAT_VARYING vec4 COL0;
          COMPAT_VARYING vec4 TEX0;
          COMPAT_VARYING vec4 TEX1;

          uniform mat4 MVPMatrix;
          uniform COMPAT_PRECISION int FrameDirection;
          uniform COMPAT_PRECISION int FrameCount;
          uniform COMPAT_PRECISION vec2 OutputSize;
          uniform COMPAT_PRECISION vec2 TextureSize;
          uniform COMPAT_PRECISION vec2 InputSize;

          #ifdef PARAMETER_UNIFORM
          uniform COMPAT_PRECISION float height;
          uniform COMPAT_PRECISION float width;
          uniform COMPAT_PRECISION float location_y;
          uniform COMPAT_PRECISION float location_x;
          uniform COMPAT_PRECISION float ZOOM;
          #else
          #define height -1.145
          #define width 2.0
          #define location_y 0.75
          #define location_x -0.5
          #define ZOOM 1.0
          #endif

          void main()
          {
          vec4 _oColor;
          vec2 _otexCoord1;
          vec2 _otexCoord2;
          _r0020 = VertexCoord.xMVPMatrix[0];
          _r0020 = _r0020 + VertexCoord.y
          MVPMatrix[1];
          _r0020 = _r0020 + VertexCoord.zMVPMatrix[2];
          _r0020 = _r0020 + VertexCoord.w
          MVPMatrix[3];
          _r0022 = _r0020.xvec4( height, 0.00000000E+00, 0.00000000E+00, 0.00000000E+00);
          _r0022 = _r0022 + _r0020.y
          vec4( 0.00000000E+00, width, 0.00000000E+00, 0.00000000E+00);
          _r0022 = _r0022 + _r0020.zvec4( 0.00000000E+00, 0.00000000E+00, 1.00000000E+00, 0.00000000E+00);
          _r0022 = _r0022 + _r0020.w
          vec4( 0.00000000E+00, 0.00000000E+00, 0.00000000E+00, 1.00000000E+00);
          _oPosition1 = _r0022;
          _oColor = COLOR;
          _r0024 = VertexCoord.xvec2( 0.00000000E+00, 1.00000000E+00);
          _r0024 = _r0024 + VertexCoord.y
          vec2( -1.00000000E+00, 0.00000000E+00);
          _otexCoord1 = _r0024 + vec2( location_y, location_x);
          _r0026 = VertexCoord.xvec2( 0.00000000E+00, 1.00000000E+00);
          _r0026 = _r0026 + VertexCoord.y
          vec2( -1.00000000E+00, 0.00000000E+00);
          _otexCoord2 = -(_r0026 + vec2( 1.0 - location_y, -1.0 - location_x));
          gl_Position = _r0022;
          COL0 = COLOR;
          TEX0.xy = _otexCoord1;
          TEX1.xy = _otexCoord2;
          }

          #elif defined(FRAGMENT)

          #if VERSION >= 130
          #define COMPAT_VARYING in
          #define COMPAT_TEXTURE texture
          out vec4 FragColor;
          #else
          #define COMPAT_VARYING varying
          #define FragColor gl_FragColor
          #define COMPAT_TEXTURE texture2D
          #endif

          #ifdef GL_ES
          #ifdef GL_FRAGMENT_PRECISION_HIGH
          precision highp float;
          #else
          precision mediump float;
          #endif
          #define COMPAT_PRECISION mediump
          #else
          #define COMPAT_PRECISION
          #endif
          COMPAT_VARYING vec4 _color1;
          COMPAT_VARYING float _frame_rotation;
          struct input_dummy {
          vec2 _video_size;
          vec2 _texture_size;
          vec2 _output_dummy_size;
          float _frame_count;
          float _frame_direction;
          float _frame_rotation;
          };
          struct output_dummy {
          vec4 _color1;
          };
          vec4 _TMP1;
          vec4 _TMP0;
          uniform sampler2D Texture;
          COMPAT_VARYING vec4 TEX0;
          COMPAT_VARYING vec4 TEX1;

          uniform COMPAT_PRECISION int FrameDirection;
          uniform COMPAT_PRECISION int FrameCount;
          uniform COMPAT_PRECISION vec2 OutputSize;
          uniform COMPAT_PRECISION vec2 TextureSize;
          uniform COMPAT_PRECISION vec2 InputSize;

          #ifdef PARAMETER_UNIFORM
          uniform COMPAT_PRECISION float height;
          uniform COMPAT_PRECISION float width;
          uniform COMPAT_PRECISION float location_y;
          uniform COMPAT_PRECISION float location_x;
          uniform COMPAT_PRECISION float ZOOM;
          #endif

          void main()
          {
          vec4 _color;

          //fix for clamping issues on GLES
          vec2 fragCoord1 = TEX0.xy * InputSize / TextureSize;
          vec2 fragCoord2 = TEX1.xy* InputSize / TextureSize;

          _TMP0 = vec4(0.0);
          if ( fragCoord1.x < 1.0 && fragCoord1.x > 0.0 && fragCoord1.y < 1.0 && fragCoord1.y > 0.0 )
          _TMP0 = COMPAT_TEXTURE(Texture, TEX0.xy / ZOOM);
          _TMP1 = vec4(0.0);
          if ( fragCoord2.x < 1.0 && fragCoord2.x > 0.0 && fragCoord2.y < 1.0 && fragCoord2.y > 0.0 )
          _TMP1 = COMPAT_TEXTURE(Texture, TEX1.xy / ZOOM);

          _color = _TMP0 + _TMP1;
          FragColor = _color;
          return;
          

          }
          #endif

          FMO 1 Reply Last reply Reply Quote 0
          • GDEHON
            GDEHON @acris last edited by

            @acris said in Rotation de l'écran à 90°:

            dans quick menu pour mame.
            https://docs.libretro.com/library/mame_2003/
            https://docs.libretro.com/library/mame2003_plus/

            attention l'option n'est pas présente dans tous les cores de mémoire

            Bonjour
            Est ce le menu avec tabulation ?
            Merci

            1 Reply Last reply Reply Quote 0
            • acris
              acris last edited by

              dans retroarch. c est le menu qui s ouvre

              1 Reply Last reply Reply Quote 0
              • FMO
                FMO @babastorm last edited by

                @babastorm : bonjour, j'ai le même problème avec ma table c**ktail. Avec la version précédente de Retroarch, je parvenais à forcer la rotation supplémentaire nécessaire pour l'effet miroir.

                (tips issue de : )
                https://www.reddit.com/r/RetroPie/comments/97x016/tutorial_split_screen_c**ktail_mode_on_retropie/

                As-tu trouvé l'astuce depuis ? La fonction TATE ROTATION ?

                merci !

                1 Reply Last reply Reply Quote 0
                • acris
                  acris last edited by

                  le fonctionnement pour les overrides de recalbox a été modifié à cause de la mise à jour de retroarch qui fonctionne différents.
                  je suppose qu'il faut passer maintenant par les surcharges :

                  Rotation de l'écran : https://recalbox.gitbook.io/documentation/v/francais/utilisateur-avance/surcharge-de-configuration/surcharges-retroarch#rotation-de-lecran
                  https://recalbox.gitbook.io/documentation/v/francais/utilisateur-avance/surcharge-de-configuration
                  https://recalbox.gitbook.io/documentation/v/francais/utilisateur-avance/surcharge-de-configuration/surcharges-retroarch

                  FMO 1 Reply Last reply Reply Quote 0
                  • normanx9
                    normanx9 last edited by

                    Lance le jeu souhaité puis fait "hotkey+B"
                    Dans le menu de retroarch il faut aller dans : "réglages"
                    "Interface utilisateur"
                    Et mettre l'option "afficher les réglages avancés" Sur activé
                    Et la l'option de rotation apparaitra dans les réglages vidéo et dans option du core
                    Plus qu'à faire un remplacement de configuration pour le core

                    1 Reply Last reply Reply Quote 0
                    • FMO
                      FMO @acris last edited by

                      @acris Merci pour ce tips. La rotation fonctionne désormais parfaitement en créant le fichier config :
                      nom-rom.zip.retroarch.cfg dans le répertoire des roms avec ce paramètre :
                      video_rotation = "1"

                      1 Reply Last reply Reply Quote 1
                      • Scanlinator
                        Scanlinator last edited by

                        Salut,
                        je rebondis sur ce post , bien que je vienne de Retropie. Je n'ai pas eut de pb pour configurer ES (le raspberry quoi) en mode portrait ainsi que les jeux individuellement dans retroarch. Mais je réagis, car ayant testé quelques jeux, j'ai tout de suite remarqué des baisse de performances notables. Un petit tour sur de nombreux forum spécialisés pour apprendre que ce mode de rotation du pi est très bouffeur de ressources . Pour l'explication technique, ceux à qui ça parle "display_rotate does NOT change the way the screen image is actually displayed, it only changes the way the framebuffer is filled by the GPU"

                        Donc à tout ceux qui utilisent la rotation dans le config.txt de boot, ce n'est malheureusement pas une bonne idée et vous allez perdre du fps/synchro même sur des jeux peu gourmand (1941 semble décrocher par moment dès l'écran titre).
                        La bonne solution est de rester en horizontal sur le pi , et de basculer la rotation dans retroarch , par jeux. Là c'est absolument nickel. Et pour ce qui est du front-end, si celui que vous utilisez n'a pas d'option TATE (Attract mode a cette option par exemple), ou n'est pas dédié (vertipie etc) alors je n'ai pas encore vu de solution pour changer le sens...

                        1 Reply Last reply Reply Quote 0
                        • Scanlinator
                          Scanlinator last edited by

                          Pour ceux que ça intéresse, la rotation d'ES est bien possible, à l'aide de --screenrotate <x> (où x = 1 à 3).

                          1 Reply Last reply Reply Quote 0
                          • GDEHON
                            GDEHON last edited by

                            Je comprends pas trop comment il fait faire !
                            Pourrais je avoir des précisions svp

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

                            Want to support us ?

                            84
                            Online

                            99.6k
                            Users

                            28.1k
                            Topics

                            187.1k
                            Posts

                            Copyright © 2021 recalbox.com