• Windows playlist (gamelist.xml) GUI editor available anywhere?

    4
    0 Votes
    4 Posts
    1k Views
    top-specciT

    Hi,
    are there any news?
    What is a working gamelist editor under windows?

    I find this: https://forum.recalbox.com/topic/9265/soft-gamelist-editor
    Seems working, but i.e. the mame-libreto -folder will not displayed.
    My trick: Rename the mame-libretor to (i.e. not used) "snes" => than the games are displayed.

    Also found the the "ARRM" editor, but for me not clear how it should work... lot of features ...

    Any other gamelist editors there ?

  • Vulkan Flycast - does it matter at all for pi?

    3
    0 Votes
    3 Posts
    411 Views
    B

    @BJRetro I confirm you'll need a gpu which is vulkan capable (and it's drivers). Currently i don't think there are many SBCs who have vulkan support (probably jetson nano ? maybe odroid N2 ?).

  • 0 Votes
    5 Posts
    182 Views
    mituM

    It depends on how is it connected to the Pi - if it's HDMI, you can get an HDMI splitter and connect both your TV and the screen at once.

  • Runcommand usage from python script not working

    2
    0 Votes
    2 Posts
    196 Views
    mituM

    Runcommand is meant to be run interactively - if you want to run it, make sure it has a controlling terminal attached. If you wish to just start the emulator & games, then why are you using Runcommand instead of starting the emulator directly ?

  • Top ways to pimp your RetroPie?

    6
    1 Votes
    6 Posts
    211 Views
    WeirdHW

    @retropieuser555 said in Top ways to pimp your RetroPie?:

    People even make their own bootup videos and hide the boot text so you get a nice clean video before the menus load.

    True. I found a bunch of great looking, generic "loading screen"-type videos on Youtube and downloaded a few for my cab. You only see it when switching on, but it greatly enhances the dedicated-machine-feel!

  • 0 Votes
    3 Posts
    478 Views
    roslofR

    @mitu said in Getting AdvanceMAME to run on FKMS builds:

    Do you care to elaborate on the Video appears a bit degraded part ? I confess I didn't use advmame before, so I don't have a past reference, I just test it out on the Pi4 - the 3.9 version - to see how it works.

    Sure mitu,

    Overall, it looks like anti-aliasing doesn't work with the SDL driver. Examples:

    Vector game lines are not anti-aliased System menu font appears jagged Video Rgb Effects, such as scan2horz do not blend nicely with the game screen.

    The setting display_antialias is set to yes, but there is no visual difference when it's disabled or enabled.

    One of the draws of using AdvanceMAME is for the clean high-res Vector images, so that's a bit of a miss. But having AdvanceMAME available for rendering raster games like Cotton 2 and Baku Baku is a must-have.

    There are also some issues going in and out of the settings menu (Tab). Sometimes, when returning to the game, the screen blanks. Also, gets very sluggish and occasionally hangs. Might not be related to the driver, but different from running this on a 3B+ without Buster.

  • Amiga CD 32 script share

    1
    2 Votes
    1 Posts
    154 Views
    No one has replied
  • [Tip] Random game list creation

    4
    6 Votes
    4 Posts
    386 Views
    pjftP

    @mitu thanks! Updated the command:)

  • Implementing WPS

    1
    1 Votes
    1 Posts
    305 Views
    No one has replied
  • Pi4

    14
    1 Votes
    14 Posts
    3k Views
    DarksaviorD

    @mitu That's unfortunate. I was about to nag him for a retropie tutorial with his mesa drivers.

  • 3 Votes
    3 Posts
    4k Views
    F

    Port to macos
    Get the script with the following command:

    curl https://raw.githubusercontent.com/meleu/share/master/noclones_fba-next.sh --output noclones_fba-next.sh

    on script replace the line 47:

    if ! wget -O "$gamelist" "$gamelist_url"; then

    by:

    if ! curl "$gamelist_url" --output "$gamelist"; then
  • FancyUp RetroAchievements please

    3
    0 Votes
    3 Posts
    556 Views
    Keltron3030K

    And PlayStation retroachievement support as well on 1.7.7+

  • What's new on RetroAchievements feature since RetroPie 4.4

    3
    3 Votes
    3 Posts
    600 Views
    SingingCoyote13S

    one thing, on Linux Xubuntu in Retropie they still have that old yellow font displaying the retroachievements. no fancy border around it or even a small window displaying your achievement.
    I know everyone has a lot to do, and i am grateful for all work being done on retropie,but it looks really beta.

  • Pegasus theme development general

    156
    2 Votes
    156 Posts
    57k Views
    AndersHPA

    @fluffypillow
    Strangely enough, these two themes work fine, including backgroundmusic in the 9999999-in-1 theme.

  • Compile modified mupen64core

    5
    0 Votes
    5 Posts
    640 Views
    dankcushionsD

    personally, if i was doing this i would make a fork in github with my changes, and then edit the retropie build script to point at it, then compile it through retropie - update via source.

    eg https://github.com/RetroPie/RetroPie-Setup/blob/master/scriptmodules/emulators/mupen64plus.sh#L32

    if i made a change to the master branch of my fork of mupen64plus-core, i would this line to
    'dankcushions core'

    note that when you edit retropie scripts the script updater will complain when you come to update it.

  • EmulationStation mod

    340
    12 Votes
    340 Posts
    358k Views
    K

    @jacobfk20 said in EmulationStation mod:

    I've updated OSK to be flush with RetroPie's master branch. It'll compile now. You can grab it from my github

    I'm very interested in OSK. That's really the only feature I wish ES had. How do I set this up?

  • 2 Votes
    3 Posts
    391 Views
    RionR

    Me to!

  • Update Retroarch Cores

    3
    0 Votes
    3 Posts
    717 Views
    D

    @herb_fargus
    Thanks! I was reading now, thanks!

  • 0 Votes
    13 Posts
    3k Views
    mituM

    That's strange, on a straight RPI3 install (4.5.1) I installed the from binary and ran Tunics, it worked fine.
    If you can get the /dev/shm/runcommand.log and post its content to pastebin.com, maybe we can figure out why it's not working.

  • Run SDL2 application on RetroPie for Raspberry Pi

    3
    0 Votes
    3 Posts
    1k Views
    Z

    Thanks, the incorrect library was the main issue with this program! Another few things I noticed while experimenting with this code snippet:

    apparently Vertex Arrays don't work with GLESv2 (stackoverflow), so you have to use Vertex Buffers errors in vertex/fragment shader are only detected when linking the program, not on compilation when using opengl extensions (e.g. GL_OES_mapbuffer, see Raspberry Pi Video Core API for available extensions) you have to put#define GL_GLEXT_PROTOTYPES before including SDL2/SDL_opengles2.h and additionally link with -lbrcmEGL in order to get the functions if you don't call SDL_Quit() before exiting your program, the raspberry pi's console will be blocked (it seems like the input focus is still on the SDL window otherwise)

    I updated the code with a few more comments and fixed some stuff:
    main.c:

    #include <SDL2/SDL.h> #include <SDL2/SDL_opengles2.h> #define FULLSCREEN 1 #define TRIANGLE_SIZE 0.9f #define INFO_LOG_BUFFER_SIZE 1024 // Shader sources const GLchar* vertexSource = "attribute vec2 position;\n" "attribute vec4 color;\n" "varying vec4 out_color;\n" "uniform mat4 proj_mat;\n" "uniform mat4 model_mat;\n" "void main()\n" "{\n" " gl_Position = proj_mat*model_mat*vec4(position, 0, 1.0);\n" " out_color = color;\n" "}\n"; const GLchar* fragmentSource = "varying vec4 out_color;\n" "void main()\n" "{\n" " gl_FragColor = out_color;\n" "}\n"; // struct representing a colored 2D vertex typedef struct{ float x; float y; float r; float g; float b; float a; }Vertex; // adjusting viewport and projection matrix to fit current window dimensions void resize(int w, int h, GLint proj_mat_location); // create rotation matrix (z axis) and upload to shader at given uniform location void setRotationMatrix(float rad, GLint model_mat_location); // create orthogonal matrix and upload to shader at given uniform location void setOrthoMatrix(float left, float right, float bottom, float top, float n, float f, GLint proj_mat_location); int main() { // initialize SDL printf("Initializing SDL...\n"); if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("ERROR: Failed to initialize SDL: %s\n", SDL_GetError()); return 1; } // setting SDL flags unsigned int sdl_flags = SDL_WINDOW_OPENGL; SDL_DisplayMode current; current.w = 800; current.h = 600; if(FULLSCREEN){ sdl_flags |= SDL_WINDOW_FULLSCREEN; // getting current display-resolution if (SDL_GetDesktopDisplayMode(0, &current) != 0){ printf("Could not retrieve current display resolution: %s\n", SDL_GetError()); } }else{ sdl_flags |= SDL_WINDOW_RESIZABLE; } const char * fullscreen_string = FULLSCREEN ? "(fullscreen)" : ""; printf("Creating window %dx%d%s...\n", current.w, current.h, fullscreen_string); SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); // use GLESv2 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); // activate V-Sync SDL_GL_SetSwapInterval(1); SDL_Window * window = SDL_CreateWindow("Hello GLES!", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, current.w, current.h, sdl_flags); if(window == NULL) { printf("Error while creating window: %s\n", SDL_GetError()); SDL_Quit(); return 1; } // create gl context printf("Creating OpenGL context...\n"); SDL_GLContext context = SDL_GL_CreateContext(window); if(context == NULL) { printf("Error while creating OpenGL Context: %s\n", SDL_GetError()); SDL_DestroyWindow(window); SDL_Quit(); return 1; } // hide mouse cursor SDL_ShowCursor(0); // set gl parameters glClearColor(1.f, 1.f, 1.f, 1.f); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); // create RGB-triangle data and copy to vertex buffer GLuint vbo; glGenBuffers(1, &vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo); Vertex vertices[3]; for(int i = 0; i < 3; i++){ vertices[i].x = cos(i*(2*M_PI/3.0f))*TRIANGLE_SIZE; vertices[i].y = sin(i*(2*M_PI/3.0f))*TRIANGLE_SIZE; vertices[i].r = 0.0f; vertices[i].g = 0.0f; vertices[i].b = 0.0f; vertices[i].a = 1.0f; } vertices[0].r = 1.0f; vertices[1].g = 1.0f; vertices[2].b = 1.0f; glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); printf("Compiling Shader...\n"); // compile the vertex shader GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertexShader, 1, &vertexSource, NULL); glCompileShader(vertexShader); // compile the fragment shader GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragmentShader, 1, &fragmentSource, NULL); glCompileShader(fragmentShader); // link vertex and fragment shader into shader program GLuint shader_program = glCreateProgram(); glAttachShader(shader_program, vertexShader); glAttachShader(shader_program, fragmentShader); glLinkProgram(shader_program); // program info log char info_log_buffer[INFO_LOG_BUFFER_SIZE]; info_log_buffer[0] = '\0'; glGetProgramInfoLog(shader_program, INFO_LOG_BUFFER_SIZE, 0, info_log_buffer); if(info_log_buffer[0] != '\0') printf("Shader-Program-Info:\n%s\n", info_log_buffer); // linking successfull? int status; glGetProgramiv(shader_program, GL_LINK_STATUS, &status); if(status == GL_FALSE){ SDL_GL_DeleteContext(context); SDL_DestroyWindow(window); SDL_Quit(); return 1; } // use custom shader glUseProgram(shader_program); // feed vertex attributes with triangle-data // position GLint posAttrib = glGetAttribLocation(shader_program, "position"); glEnableVertexAttribArray(posAttrib); glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0); // color GLint colorAttrib = glGetAttribLocation(shader_program, "color"); glEnableVertexAttribArray(colorAttrib); glVertexAttribPointer(colorAttrib, 4, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const GLvoid*)(2*sizeof(float))); // retrieve uniform locations GLint proj_mat_location = glGetUniformLocation(shader_program, "proj_mat"); GLint model_mat_location = glGetUniformLocation(shader_program, "model_mat"); // inital resize to set viewport and projection mastrix resize(current.w, current.h, proj_mat_location); // run main loop printf("Rendering triangle...\n"); while(1){ int quit = 0; SDL_Event e; while(SDL_PollEvent(&e)){ if(e.type == SDL_QUIT || e.type == SDL_KEYDOWN) quit = 1; else if(e.type == SDL_WINDOWEVENT && e.window.event == SDL_WINDOWEVENT_RESIZED) resize(e.window.data1, e.window.data2, proj_mat_location); } if(quit){ printf("Program was quit by user!\n"); break; } glClearColor(1,1,1,1); glClear(GL_COLOR_BUFFER_BIT); setRotationMatrix(SDL_GetTicks()/1000.f * M_PI/2.f, model_mat_location); glDrawArrays(GL_TRIANGLES, 0, 3); SDL_GL_SwapWindow(window); } // clean up SDL_GL_DeleteContext(context); SDL_DestroyWindow(window); SDL_Quit(); return 0; } void setRotationMatrix(float rad, GLint model_mat_location) { // rotation around z axis float sin_angle = sin(rad); float cos_angle = cos(rad); float mat[16]; mat[0] = cos_angle; mat[1] = sin_angle; mat[2] = 0; mat[3] = 0; mat[4] = -sin_angle; mat[5] = cos_angle; mat[6] = 0; mat[7] = 0; mat[8] = 0; mat[9] = 0; mat[10] = 1; mat[11] = 0; mat[12] = 0; mat[13] = 0; mat[14] = 0; mat[15] = 1; glUniformMatrix4fv(model_mat_location, 1, GL_FALSE, mat); } void resize(int w, int h, GLint proj_mat_location) { glViewport(0, 0, w, h); // set orthogonal view so that coordinates [-1, 1] area always visible and proportional on x and y axis if(w > h){ float f = w/(float)h; setOrthoMatrix(-f, f, -1, 1, -1, 1, proj_mat_location); }else{ float f = h/(float)w; setOrthoMatrix(-1, 1, -f, f, -1, 1, proj_mat_location); } } void setOrthoMatrix(float left, float right, float bottom, float top, float n, float f, GLint proj_mat_location) { // set orthogonal matrix float mat[16]; mat[0] = 2.0f/(right-left); mat[1] = 0.f; mat[2] = 0.f; mat[3] = 0.f; mat[4] = 0.f; mat[5] = 2.0f/(top-bottom); mat[6] = 0.f; mat[7] = 0.f; mat[8] = 0.f; mat[9] = 0.f; mat[10] =-2.f/(f-n); mat[11] = 0.f; mat[12] =-(right+left)/(right-left); mat[13] =-(top+bottom)/(top-bottom); mat[14] =-(f+n)/(f-n); mat[15] = 1.f; glUniformMatrix4fv(proj_mat_location, 1, GL_FALSE, mat); }

    Compiles and runs on Raspberry Pi 3:

    gcc main.c -o gles_test -lSDL2 -lSDL2main -L/opt/vc/lib -lbrcmGLESv2 -lm ./gles_test

    triangle.png

    I hope this might be usefull to someone :)

    @mitu Thanks again for your quick reply!

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.