RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    pcsx-rearmed keep crashing on Raspberry Pi Zero with DPI display

    Scheduled Pinned Locked Moved Help and Support
    raspberry pi 0dpi displaypcsx-rearmedgbz
    6 Posts 3 Posters 1.3k 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.
    • T
      timemaster
      last edited by

      Hi,
      I have tried to run pcsx-rearmed emulator on Raspberry Pi Zero because I have performance issues with lr-pcsx-rearmed, also on RetroPie wiki is mentioned to use this emulator on Rpi 0 or 1 for better performance. I am using Rpi Zero with DPI display with 320x240 fixed resolution (GameBoy Zero with SAIO board). Detailed description of this problem and also more useful information can be obtained in the support thread for this board but the problem will be probably the same for any DPI display connected.. I can confirm that emulator is running well with HDMI display. Can somebody help or suggest what to check, where to dig?

      I have also opened the bug #112 on Github

      Thank you for any help

      TM

      1 Reply Last reply Reply Quote 0
      • T
        timemaster
        last edited by

        Ok, I have some progress here... I can run the emulator from a console and play a game on SAIO :) (rpi zero 320x240 DPI display)

        I can also confirm that game and sound are both without any performance issues which is really great, compared to lr-pcsx-rearmed.

        I tried Worms World party and Worms Armageddon earlier today...

        The main problem is in this line

        ret = plat_sdl_change_video_mode(g_menuscreen_w, g_menuscreen_h, 1);

        in frontend/lippicofe/plat_sdl.c

        which needs to be commented (// at the start of this line) for the emulator to start correctly.

        I have done many experiments with the rest of the code to achieve the best menu resolution - 320x240 and it was working somehow (some segfaults, sometimes did not work with -cdfile cmd option, and so on, I can also run the emulator with 640x480 with not so much problems but then the menu is not usable. I have seen the menu in some edge conditions nicely in 320x240 and the game was also perfect but the other problems like segfaults raised with this).

        The problem is with my knowledge of C and SDL. It should be really fast for someone who has some insight into it. Is here somebody interested who can help me with this? I can provide my patches to show what is working and how but I think I am nearly at the end with everything that I can do here.

        1 Reply Last reply Reply Quote 0
        • T
          timemaster
          last edited by

          Also the problem is not directly in pcsx-rearmed but in libpicofe library, corresponding bug has been opened here:

          https://github.com/notaz/libpicofe/issues/4

          1 Reply Last reply Reply Quote 0
          • T
            timemaster
            last edited by

            Today, I have some great news :) The emulator is now fully functional. The only thing you need to do is to update git repository line in RetroPie-Setup/scriptmodules/emulators/pcsx-rearmed.sh

            from
            gitPullOrClone "$md_build" https://github.com/notaz/pcsx_rearmed.git

            to
            gitPullOrClone "$md_build" https://github.com/timemaster5/pcsx_rearmed.git saio

            and then run update pcsx-rearmed from source in retropie-setup script

            Then you will be able to run this emulator without performance issues but only with USB keyboard. I am now struggling with key bindings, I am not able to bind UP/DOWN/LEFT/RIGHT buttons of GBZ SAIO.. probably because they are not buttons but hat... I don't know now.

            Another issue is with the mouse cursor being visible in some games, but this could be hopefully easily fixable.

            And for the record, the main problem has been caused by one commit to libpicofe adds SDL_DOUBLEBUF flag.

            J 1 Reply Last reply Reply Quote 0
            • J
              jasonlovespi @timemaster
              last edited by

              @timemaster

              I've run into a compile error. Details are below. After you review below, let me know what I can do to further troubleshoot and provide useful information.

              I'm using the MZDPI-ZERO-VGA 2.8" display and I was heartbroken when pcsx-rearmed froze at launch with the display enabled (but worked fine with HDMI.) I was so thrilled to see you discovered a way through the DPI display problem.

              I followed your instructions to modify my pcsx-rearmed.sh file. When I do RetroPie's "compile from source", I see the script successfully pull your code from git. However, the compile crashes with the log below.

              (Note that the log says RPi3, but I have the brand new RPi Zero 2, which uses the 1ghz down clocked RPi3 core.)

              The key error message seems to be "libpcsxcore/cdriso.c:1092:12: error: conflicting types for ‘uncompress2’"

              I'm afraid my git and c skills are not up to par, otherwise I would try to be a contributor. I don't know if this error is due user incompetence at my end, or maybe enough time has passed that dependencies have changed from underneath you.

              I am so grateful that your code will let me use my DPI display. Let me know how to help.

              RetroPie-Setup version: 4.7.19 (b3acb001)
              System: rpi3 (armv7l) - Raspbian GNU/Linux 10 (buster) - Linux retropie 5.10.63-v7+ #1459 SMP Wed Oct 6 16:41:10 BST 2021 armv7l GNU/Linux
              
              = = = = = = = = = = = = = = = = = = = = =
              Installing dependencies for 'pcsx-rearmed' : Playstation emulator - PCSX (arm optimised)
              = = = = = = = = = = = = = = = = = = = = =
              
              /home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed /home/pi
              
              = = = = = = = = = = = = = = = = = = = = =
              Getting sources for 'pcsx-rearmed' : Playstation emulator - PCSX (arm optimised)
              = = = = = = = = = = = = = = = = = = = = =
              
              Already on 'master'
              Your branch is up to date with 'origin/master'.
              Already up to date.
              HEAD is now in branch 'master' at commit 'bebe989ba22f0bac230a0b8a75617ae895ea274f'
              /home/pi
              /home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed /home/pi
              
              = = = = = = = = = = = = = = = = = = = = =
              Building 'pcsx-rearmed' : Playstation emulator - PCSX (arm optimised)
              = = = = = = = = = = = = = = = = = = = = =
              
              architecture        arm
              platform            generic
              built-in GPU        neon
              sound drivers       alsa
              plugins             gpu_gles.so gpu_unai.so gpu_peops.so spunull.so 
              C compiler          gcc
              C compiler flags     -mcpu=cortex-a53  -mfpu=neon-fp-armv8 -O2 -marm -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -D_FILE_OFFSET_BITS=64 -Wno-unused-result
              libraries           -L/usr/lib/arm-linux-gnueabihf -lSDL -lasound -lpng  -ldl -lm -lpthread -lz
              linker flags        
              enable dynarec      yes
              ARMv7 optimizations yes
              enable ARM NEON     yes
              TI C64x DSP support no
              tslib support       no
              OpenGL ES output    yes
              make -C plugins/gpulib/ clean
              make[1]: Entering directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/gpulib'
              rm -f gpulib.a obj/gpu.o obj/vout_pl.o 
              make[1]: Leaving directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/gpulib'
              for dir in plugins/spunull/spunull.so plugins/dfxvideo/gpu_peops.so plugins/gpu_unai/gpu_unai.so plugins/gpu-gles/gpu_gles.so ; do \
              	make -C $(dirname $dir) clean; done
              make[1]: Entering directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/spunull'
              rm -f spunull.so
              make[1]: Leaving directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/spunull'
              make[1]: Entering directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/dfxvideo'
              rm -f gpu_peops.so
              make[1]: Leaving directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/dfxvideo'
              make[1]: Entering directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/gpu_unai'
              rm -f gpu_unai.so
              make[1]: Leaving directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/gpu_unai'
              make[1]: Entering directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/gpu-gles'
              rm -f gpu_gles.so
              make[1]: Leaving directory '/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/plugins/gpu-gles'
              rm -f pcsx libpcsxcore/cdriso.o libpcsxcore/cdrom.o libpcsxcore/cheat.o libpcsxcore/debug.o libpcsxcore/decode_xa.o libpcsxcore/disr3000a.o libpcsxcore/mdec.o libpcsxcore/misc.o libpcsxcore/plugins.o libpcsxcore/ppf.o libpcsxcore/psxbios.o libpcsxcore/psxcommon.o libpcsxcore/psxcounters.o libpcsxcore/psxdma.o libpcsxcore/psxhle.o libpcsxcore/psxhw.o libpcsxcore/psxinterpreter.o libpcsxcore/psxmem.o libpcsxcore/r3000a.o libpcsxcore/sio.o libpcsxcore/socket.o libpcsxcore/spu.o libpcsxcore/gte.o libpcsxcore/gte_nf.o libpcsxcore/gte_divider.o libpcsxcore/gte_arm.o libpcsxcore/gte_neon.o libpcsxcore/new_dynarec/new_dynarec.o libpcsxcore/new_dynarec/linkage_arm.o libpcsxcore/new_dynarec/pcsxmem.o libpcsxcore/new_dynarec/emu_if.o plugins/dfsound/dma.o plugins/dfsound/freeze.o plugins/dfsound/registers.o plugins/dfsound/spu.o plugins/dfsound/out.o plugins/dfsound/nullsnd.o plugins/dfsound/arm_utils.o plugins/dfsound/alsa.o plugins/gpulib/gpu.o plugins/gpulib/vout_pl.o plugins/gpu_neon/psx_gpu_if.o plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.o plugins/cdrcimg/cdrcimg.o plugins/dfinput/main.o plugins/dfinput/pad.o plugins/dfinput/guncon.o frontend/cspace.o frontend/cspace_neon.o frontend/libpicofe/in_sdl.o frontend/libpicofe/plat_sdl.o frontend/libpicofe/plat_dummy.o frontend/libpicofe/linux/in_evdev.o frontend/plat_sdl.o frontend/libpicofe/gl.o frontend/libpicofe/gl_platform.o frontend/plugin_lib.o frontend/libpicofe/linux/plat.o frontend/libpicofe/readpng.o frontend/libpicofe/fonts.o frontend/libpicofe/arm/neon_scale2x.o frontend/libpicofe/arm/neon_eagle2x.o frontend/menu.o frontend/libpicofe/input.o frontend/main.o frontend/plugin.o pcsx.map frontend/revision.h
              gcc  -mcpu=cortex-a53  -mfpu=neon-fp-armv8 -O2 -Wall -ggdb -Iinclude -ffast-math -O2 -DNDEBUG -mcpu=cortex-a53  -mfpu=neon-fp-armv8 -O2 -marm -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -D_FILE_OFFSET_BITS=64 -Wno-unused-result   -c -o libpcsxcore/cdriso.o libpcsxcore/cdriso.c
              libpcsxcore/cdriso.c: In function ‘parsetoc’:
              libpcsxcore/cdriso.c:354:31: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
                 strncpy(tmp, linebuf, sizeof(linebuf));
                                             ^
              libpcsxcore/cdriso.c: In function ‘parsecue’:
              libpcsxcore/cdriso.c:504:33: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
                 strncpy(dummy, linebuf, sizeof(linebuf));
                                               ^
              libpcsxcore/cdriso.c: At top level:
              libpcsxcore/cdriso.c:1092:12: error: conflicting types for ‘uncompress2’
               static int uncompress2(void *out, unsigned long *out_size, void *in, unsigned long in_size)
                          ^~~~~~~~~~~
              In file included from libpcsxcore/cdriso.c:40:
              /usr/include/zlib.h:1283:21: note: previous declaration of ‘uncompress2’ was here
               ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest,   uLongf *destLen,
                                   ^~~~~~~~~~~
              make: *** [<builtin>: libpcsxcore/cdriso.o] Error 1
              Could not successfully build pcsx-rearmed - Playstation emulator - PCSX (arm optimised) (/home/pi/RetroPie-Setup/tmp/build/pcsx-rearmed/pcsx not found).
              /home/pi
              
              Log ended at: Sat 06 Nov 2021 09:17:29 AM MDT
              Total running time: 0 hours, 0 mins, 7 secs
              
              mituM 1 Reply Last reply Reply Quote 0
              • mituM
                mitu Global Moderator @jasonlovespi
                last edited by

                @jasonlovespi The poster hasn't been active for 3 years in the forum. Please open a separate topic - don't necro-post by bumping old topics. Lots of things have changed since the original post and the informations here may not be accurate and/or out of date.

                1 Reply Last reply Reply Quote 0
                • mituM mitu locked this topic on
                • mituM mitu locked this topic on
                • mituM mitu locked this topic on
                • 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.