libretro / libretro-cap32

caprice32 4.2.0 libretro
21 stars 34 forks source link

Poor performance with the original Raspberry Pi B (256Mb Model) #121

Closed anetwalker closed 1 year ago

anetwalker commented 1 year ago

I've been testing the emulator provides with Retropie 4.8 for RP1 B, and It is noted that the sound does not play at normal speed, During the play of the game it is also observed that the speed is lower than the original. I've overclocked the RP1, change the render resolution and get the same results, also I've update the emulator from source and it doesn't improve.

Could you help me?

Thanks

DSkywalk commented 1 year ago

The CPC has many tricks that require a good CPU to be emulated, but I think it should work well on the hardware you mention, I've got almost fullspeed on the DS, I don't understand how it can't be done on a rasp. Try compiling with these flags that have worked very well on the Evercade:

CFLAGS := -DFRONTEND_SUPPORTS_RGB565  -DLOWRES -DINLINE="inline" -DM16B
CFLAGS += -falign-functions=1 -falign-jumps=1 -falign-loops=1
CFLAGS += -fomit-frame-pointer -ffast-math  
CFLAGS += -funsafe-math-optimizations -fsingle-precision-constant -fexpensive-optimizations
CFLAGS += -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops
anetwalker commented 1 year ago

Hi David, thanks for your advice. Unfortunately I have a limited knowledge programming. Could you guide me how to carry out what you suggest me?

DSkywalk commented 1 year ago

Do you know how to copy a file to the pi and run it? I can compile a hello-world-sample to see if it works for you and if it works fine use those flags for the core, see what we can improve :+1:

anetwalker commented 1 year ago

Yes, I have full ssh access to the RP1 and I can run whatever you want. Thanks for your help!

DSkywalk commented 1 year ago

Please test this cores, just copy/rename to your rpi :tada:

lowres/16bits

Compatible cflags: -march=armv6 -mfloat-abi=hard -mfpu=vfp

cap32_v6fp_libretro.zip

Optimized cflags: -march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp

cap32_v6zk_libretro.zip

lowres/16bits (gcc-hf)

RA base cflags: -march=armv6j -mfpu=vfp -mfloat-abi=hard -marm

cap32_hfv6j_libretro.zip

:smiley:

DSkywalk commented 1 year ago

lowres/24bits

cap32_hfv6j-24_libretro.zip cap32_v6fp-24_libretro.zip

hires/24bits

cap32_v6fp-24h_libretro.zip cap32_hfv6j-24h_libretro.zip

Try not to get confused with so many names and tell me how each of the core versions compiled for RPi1/B works for you.

Thanks!

anetwalker commented 1 year ago

Thanks David, I have been testing some of the libraries you provide me. Unfortunately I'm getting an error when launch the rom from EmulationStation:

pi@retropie:/opt/retropie/configs/amstradcpc $ cat /dev/shm/runcommand.log Parameters: Executing: /opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-caprice32/cap32_libretro.so --config /opt/retropie/configs/amstradcpc/retroarch.cfg "/home/pi/RetroPie/roms/amstradcpc/Abu Simbel Profanation.zip" --verbose --appendconfig /dev/shm/retroarch.cfg [INFO] RetroArch 1.8.8 (Git 9552f87) [INFO] Redirigiendo archivo de guardado a "/home/pi/RetroPie/roms/amstradcpc/Abu Simbel Profanation.srm". [INFO] Redirigiendo archivo de guardado rápido a "/home/pi/RetroPie/roms/amstradcpc/Abu Simbel Profanation.state". [INFO] === Build ======================================= [INFO] Capacidades: [INFO] Built: Nov 2 2020 [INFO] Version: 1.8.8 [INFO] Git: 9552f87 [INFO] ================================================= [INFO] Loading dynamic libretro core from: "/opt/retropie/libretrocores/lr-caprice32/cap32_libretro.so" [ERROR] Failed to open libretro core: "/opt/retropie/libretrocores/lr-caprice32/cap32_libretro.so" Error(s): /lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.29' not found (required by /opt/retropie/libretrocores/lr-caprice32/cap32_libretro.so)

It seems that I need a newer version of libm.so.6.

I will find out if there is any way to update it.

DSkywalk commented 1 year ago

ok, old devkit... try this build: cap32_c6v_libretro.zip [-march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp]

anetwalker commented 1 year ago

Wow! I did the change and the performance has greatly improved. The only problem now is when I try to run gx4000 roms, I get the error "Cartridge ERROR: Please select CPC6128+.". You are a genious, If you come to Madrid I invite you to some beers.

DSkywalk commented 1 year ago

I have added in the last update different flags for RPI, you can tell the Retropie guys that they can use them now and check that with the official build it works for you too (and more importantly it works for everyone else). If you have any questions, feel free to reopen this ISSUE.

imagen Regarding your problem, in the core options activate the 6128+, but keep in mind that in 16bits it will give you problems. I'll prepare a 24bit build for you, otherwise it will give you graphic errors ( see #119 ). Have a different confg for GX4000 because PLUS mode is not compatible with many games, use it ONLY for cartridge games.

Test this build (24bits for RPI1 B) cap32_c6v24_libretro.zip [-march=armv6zk -mcpu=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp]

Muchas gracias por tu apoyo, me apunto la cerveza :beers: