Raspberry Pi 4

For information, Recalbox IS NOT compatible with Raspberry Pi 4 yet.
Pour information, Recalbox N'EST PAS encore compatible avec le Raspberry Pi 4.

The Recalbox Team.

Rotation de l'écran à 90°


  • Screenscraper
    Developer
    Global moderator
    Team

    @thedude Actuellement, c'est faisable, mais un poil compliqué (et mal documenté).

    Avec la 6.1, d'ici quelques jours ce sera facilement réalisable.



  • Merci pour les informations.
    J’essaierais avec la version 6.1 puis je marquerais le sujet comme résolu.



  • Je suis ton sujet ça m'intéresse
    J'aimerais aussi pouvoir pivoter l'image sur certains jeux d'arcade (ceux verticaux forcément)... Pourquoi pas en mettant un interrupteur sur gpio à la place de ceux utilisables pour on/off
    Ou pourquoi pas créer un system mame-v et fba-v ?


  • Screenscraper
    Developer
    Global moderator
    Team

    Dans la 6.1 pour pourrez facilement surcharger la conf retroarch par jeu, ou pour un repertoire complet (ce qui vous permettrait de mettre tous les jeux verticaux dans un sous-repertoire).



  • Bonjour à tous,

    @Bkg2k Je rencontre la même difficulté avec le jeu mame Toki que je souhaite faire pivoter de 90°.

    Comment peux-t-on surcharger le paramétrage de ce jeu (jujub.zip) depuis que le RB 6.1 ? Je ne trouve pas d'option à ce sujet dans l'écran de retroarch.

    Merci



  • Bonsoir,
    Je recherche également comment configurer retroarch pour afficher un groupe de jeu en vertical...mais je sèche complet, je trouve pas l'option...je suis en 6.1.1.
    Pouvez-vous me dire comment s'appelle cette option ? et ou la trouver ?
    Merci par avance, et bonne fêtes aux membres et à l'équipe Recalbox !!!!


  • Global moderator
    Team

    l'option s'appelle tate de mémoire



  • 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 cocktail, 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 😄 !


  • Global moderator
    Team

    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



  • @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/cocktail_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"

    cocktail_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



  • @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


  • Global moderator
    Team

    dans retroarch. c est le menu qui s ouvre



  • @babastorm : bonjour, j'ai le même problème avec ma table cocktail. 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_cocktail_mode_on_retropie/

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

    merci !


  • Global moderator
    Team



  • 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



  • @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"



  • 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...



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



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


Log in to reply
 

Want to support us ?

235
Online

78.2k
Users

19.9k
Topics

146.8k
Posts