FBA new core option
-
@voljega i remember people saying PGM and psyko games running slow on a pi2, but they looked (almost) fine on my pi3
-
@subs As i said, they run totally fine on mine, never saw them under 59.9 fps. But perhaps my overclock settings are agressive, and my system is better optimized, so i'll try to lower the requirements with a few speedhacks.
-
OK I must have mixed something a little because my test results are better than what I remember on PI3 :
Thoase are tests with non overclocked Pi3 and overclocked Pi2 (this one overclocked only through the ES menu)
-
By the way, with latest commit, every control issue should be solved.
-
FYI, PGM games on my OC Pi3@1400 run full speed (59.9-60fps) exception made for the 2 most recent titles released in 2005 : "Spectral Vs Générations" and "The killing blade Plus" which perform only around 54-57fps max during gameplay.
The same games executed on my OC Pi2@1100 display around 50-54fps max with slightly choppy sound everytime the framerate drops (42-46 fps only for Spectral vs Generation & The killing blade plus with almost constant choppy sound during gameplay)All those framerate tests have been performed using earlier versions of FBA_libretro core (v0.2.97.30 and v0.2.97.34) which appear to be less resource-consuming. The same tests run on versions 0.2.97.37 or 0.2.97.38 of the FBA core result in a drop of approximately 7% in performances compared to earlier releases, thus degrading a bit more the experience :=(
-
@gkralicek2 what about v0.2.97.36 ? "The killing blade Plus" performs around 57-60fps for me with v0.2.97.36, and my OC is lower. What's more, unlike porting v0.2.97.30/34 code to current fba, porting v0.2.97.36 code to current fba is something within my skills.
-
@barbudreadmon said in FBA new core option:
By the way, with latest commit, every control issue should be solved.
What do you mean by that ? In which game for instance ?
-
@voljega there are a lot!
For example:
- Ace Attacker (FD1094 317-0059) - no button working
- Angel Kids (Japan) - impossible to go left
- Arkanoid - Revenge of DOH (World) - the sensitivity is super high (?)
- Asterix (ver EAD) - player 2 can't access the game
- Bikkuri Card (Japan) - payout screen can't be skipped
- Bomb Bee - the sensitivity is super high (?)
- Bullet (FD1094 317-0041) - only coin and start button working
- Caliber 50 [No sound, imperfect inputs] - directions don't work
- Check Man - only coin button working
- Chance Kun (Japan) - only coin button working
- Cutie Q - the sensitivity is super high (?)
- Dark Planet [Dial doesn't work very well] - directions not working properly
- Deroon DeroDero [No sound] - only directions working
- DownTown / Mokugeki (Set 1) [No sound, imperfect inputs] - directions not working properly
- Excite League (FD1094 317-0079) - only coin and start button working
- F-1 Dream [Game is bugged, use the bootleg instead.] - weird directions on turns
- Ganbare! Marine Kun (Marine 2K0411 JPN) - only coin button working
- Gee Bee - the sensitivity is super high (?)
- G.I. Joe (World, EAB, set 1) - coin to pass black screen, but impossible to select
- Heavy Barrel (US) - directions nor working properly
etc...
Maybe some of these aren't directly related with the input system, but you get the idea
-
@paradadf yeah but i assume each one of those is a different issue or so, how is it possible that they would be all corrected in a instant ?
-
@voljega I was just mentioning the first ones from my list which have some kind of input problems. And as I said before, I'm not certain that all those were directly related to the input handling, but some for sure. I can't differentiate the root of the problem
-
@voljega not really different issues, most of them were missing inputs because the old input handling was hard to maintain, i rewrote it.
What we were doing before :
- Compare button's display name with a list of 305 display name we indexed
- Use the first one matching, adapt it through core option
- If no match, skip the button
What we are doing now :
- Use the button's normalized name, there is around twenty of them, and, unlike display names, they are programatically understandable.
- Get the number of "fire" button (= buttons used in gameplay) used in the game, if lesser than or equal to 4 "fire" button tell if it is a neogeo game or not, if greater than 4 "fire" button tell if it is a street fighter or not
- Use a different mapping for each of those 4 cases, adapt it through core option
NB : I didn't debug the analog inputs yet, but that's a different issue.
-
@barbudreadmon Cool ! I'll retest everything not working when it's released then
-
@voljega It is released, but not in recalbox's makefile yet, you can still build and use it the "normal" way :
git clone https://github.com/libretro/fbalpha.git
cd fbalpha/
make -f makefile.libretro platform=rpi2Then you would have to update your es_systems.cfg file with the path to the "fbalpha_libretro.so" you just built
Since recalbox is "readonly", i suppose you have to remount your filesystem in read/write mode first :
mount -o remount,rw /There are still a few games that segfault because of dipswitch, that's the next thing i want to solve.
-
@barbudreadmon I having the following errors with Ubuntu 16.04 32-bit::
paradadf@paradadf-pc:~/fbalpha$ make -f makefile.libretro platform=rpi2 cc -DARM -O2 -DNDEBUG -fPIC -Wno-write-strings -D__LIBRETRO__ -DLSB_FIRST -marm -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -ffast-math -DINLINE="static inline" -DSH2_INLINE="static inline" -D__LIBRETRO_OPTIMIZATIONS__ -DUSE_SPEEDHACKS -DFRONTEND_SUPPORTS_RGB565 -Isrc/burner/win32 -Isrc/burner/libretro -Isrc/burner/libretro/tchar -Isrc/burn -Isrc/cpu -Isrc/burn/snd -Isrc/burn/devices -Isrc/intf -Isrc/intf/input -Isrc/intf/cd -Isrc/intf/audio -Isrc/burner -Isrc/cpu -Isrc/cpu/i8039 -Isrc/cpu/i8051 -Isrc/dep/libs/zlib -Isrc/burn/drv/capcom -Isrc/burn/drv/konami -Isrc/burn/drv/dataeast -Isrc/burn/drv/cave -Isrc/burn/drv/neogeo -Isrc/burn/drv/psikyo -Isrc/burn/drv/sega -Isrc/burn/drv/toaplan -Isrc/burn/drv/taito -Isrc/dep/generated -Isrc/dep/libs -c src/burner/unzip.c -o src/burner/unzip.o cc: warning: ‘-mcpu=’ is deprecated; use ‘-mtune=’ or ‘-march=’ instead cc: error: unrecognized command line option ‘-marm’ cc: error: unrecognized command line option ‘-mfpu=neon-vfpv4’ cc: error: unrecognized command line option ‘-mfloat-abi=hard’ makefile.libretro:585: recipe for target 'src/burner/unzip.o' failed make: *** [src/burner/unzip.o] Error 1
I suppose, I would need to make some modifications in order to cross compile, but that's beyond my skills XD
-
@paradadf Because ubuntu 16.04 uses gcc-6.X by default and fba is not yet compatible with gcc-6.X , try this :
CC="gcc-5.4" CXX="g++-5.4" make -f makefile.libretro platform=rpi2If it complains about missing gcc/g++ 5.4, try this first :
sudo apt-get install gcc-5.4 g++-5.4 -
@barbudreadmon still nothing :S
paradadf@paradadf-pc:~/fbalpha$ gcc --version gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. paradadf@paradadf-pc:~/fbalpha$ g++ --version g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. paradadf@paradadf-pc:~/fbalpha$ CC="gcc-5.4" CXX="g++-5.4" make -f makefile.libretro platform=rpi2 gcc-5.4 -DARM -O2 -DNDEBUG -fPIC -Wno-write-strings -D__LIBRETRO__ -DLSB_FIRST -marm -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -ffast-math -DINLINE="static inline" -DSH2_INLINE="static inline" -D__LIBRETRO_OPTIMIZATIONS__ -DUSE_SPEEDHACKS -DFRONTEND_SUPPORTS_RGB565 -Isrc/burner/win32 -Isrc/burner/libretro -Isrc/burner/libretro/tchar -Isrc/burn -Isrc/cpu -Isrc/burn/snd -Isrc/burn/devices -Isrc/intf -Isrc/intf/input -Isrc/intf/cd -Isrc/intf/audio -Isrc/burner -Isrc/cpu -Isrc/cpu/i8039 -Isrc/cpu/i8051 -Isrc/dep/libs/zlib -Isrc/burn/drv/capcom -Isrc/burn/drv/konami -Isrc/burn/drv/dataeast -Isrc/burn/drv/cave -Isrc/burn/drv/neogeo -Isrc/burn/drv/psikyo -Isrc/burn/drv/sega -Isrc/burn/drv/toaplan -Isrc/burn/drv/taito -Isrc/dep/generated -Isrc/dep/libs -c src/burner/unzip.c -o src/burner/unzip.o /bin/sh: 1: gcc-5.4: not found makefile.libretro:585: recipe for target 'src/burner/unzip.o' failed make: *** [src/burner/unzip.o] Error 127
-
@paradadf Hmmm try with :
CC="gcc" CXX="g++" make -f makefile.libretro platform=rpi2 -
@barbudreadmon I get the first error again. But don't worry, I'll wait until recalbox gets updated to finish the list. Thank you!
-
@paradadf you can't compile the core without using buildroot. You'd just need to update the commit id of the .mk then
make libretro-fba-dirclean && make libretro-fba
from the root of the recalbox-buildroot repoAnd we still need to improve the handling of some specific platforms, as said on one of your PR
-
@barbudreadmon said in FBA new core option:
@gkralicek2 what about v0.2.97.36 ? "The killing blade Plus" performs around 57-60fps for me with v0.2.97.36, and my OC is lower. What's more, unlike porting v0.2.97.30/34 code to current fba, porting v0.2.97.36 code to current fba is something within my skills.
0.2.97.36 is indeed a tad better on "Killing Blade Plus" than 0.2.97.37 or 0.2.97.38 but still slower on "Spectral vs Generations" than 0.2.97.34 or .30 (the latter being the quickest of all).
Something has been changed to the FBA code after version 0.2.97.34 that has impacted the performances of PGM support in a negative way, but i don't know what exactly :=(
Could it be that early versions of FBA with PGM support were using some kind of "performance mode" vs "conservative mode" in the most recent releases (a bit like it is the case with SH2 support and the Fast vs Accurate mode) ?