RetroArch Emulator Frontend
I've spent the last week porting RetroArch, a multi-emulator frontend to the Raspberry Pi. My port is intended to run from the command line, with no X server running. It uses EGL/OpenVG to render directly to a fullscreen framebuffer. So far, the following features work:
* Fullscreen video
* Keyboard and joystick controls
* Audio (theoretically, couldn't get it working myself because ALSA isn't working on my installation right now)
* Netplay should also work in theory
Future work:
* Get audio working through OpenMAX instead of the alpha-level ALSA driver
* Get it running in an X window (this might be better suited for a full port of SDL to GLES)
* Bulletproof keyboard code (currently depends on raw keyboard mode and can corrupt your terminal if the emulator crashes unexpectedly)
You can grab and compile the sources from here: https://github.com/ToadKing/RetroArch-Rpi
You also will need to download a compile emulator cores for the systems you wish to emulate. To get a list of emulator cores already ported, you can run this script: https://github.com/Themaister/libretro-super (Also note that I've had some issues getting the SNES cores working, so YMMV.)
Feel free to report any bugs you encounter.
* Fullscreen video
* Keyboard and joystick controls
* Audio (theoretically, couldn't get it working myself because ALSA isn't working on my installation right now)
* Netplay should also work in theory
Future work:
* Get audio working through OpenMAX instead of the alpha-level ALSA driver
* Get it running in an X window (this might be better suited for a full port of SDL to GLES)
* Bulletproof keyboard code (currently depends on raw keyboard mode and can corrupt your terminal if the emulator crashes unexpectedly)
You can grab and compile the sources from here: https://github.com/ToadKing/RetroArch-Rpi
You also will need to download a compile emulator cores for the systems you wish to emulate. To get a list of emulator cores already ported, you can run this script: https://github.com/Themaister/libretro-super (Also note that I've had some issues getting the SNES cores working, so YMMV.)
Feel free to report any bugs you encounter.
Re: RetroArch Emulator Frontend
Wow! This should be fantastic! Now, this is probably a silly question, but does the front-end support vertical orientation?Toad King wrote:I've spent the last week porting RetroArch, a multi-emulator frontend to the Raspberry Pi. My port is intended to run from the command line, with no X server running. It uses EGL/OpenVG to render directly to a fullscreen framebuffer. So far, the following features work:
* Fullscreen video
* Keyboard and joystick controls
* Audio (theoretically, couldn't get it working myself because ALSA isn't working on my installation right now)
* Netplay should also work in theory
Future work:
* Get audio working through OpenMAX instead of the alpha-level ALSA driver
* Get it running in an X window (this might be better suited for a full port of SDL to GLES)
* Bulletproof keyboard code (currently depends on raw keyboard mode and can corrupt your terminal if the emulator crashes unexpectedly)
You can grab and compile the sources from here: https://github.com/ToadKing/RetroArch-Rpi
You also will need to download a compile emulator cores for the systems you wish to emulate. To get a list of emulator cores already ported, you can run this script: https://github.com/Themaister/libretro-super (Also note that I've had some issues getting the SNES cores working, so YMMV.)
Feel free to report any bugs you encounter.
I was looking into the Pi as a MAME machine, but put the project on hiatus due to the lack of proper software for my project. But if this works well, I may just have to start the project back up! Now, at least I won't have to worry about the porting of AdvanceMenu.
Re: RetroArch Emulator Frontend
Right now it does not support vertical orientation, but it wouldn't be a difficult feature to add.benhofb wrote:Wow! This should be fantastic! Now, this is probably a silly question, but does the front-end support vertical orientation?Toad King wrote:I've spent the last week porting RetroArch, a multi-emulator frontend to the Raspberry Pi. My port is intended to run from the command line, with no X server running. It uses EGL/OpenVG to render directly to a fullscreen framebuffer. So far, the following features work:
* Fullscreen video
* Keyboard and joystick controls
* Audio (theoretically, couldn't get it working myself because ALSA isn't working on my installation right now)
* Netplay should also work in theory
Future work:
* Get audio working through OpenMAX instead of the alpha-level ALSA driver
* Get it running in an X window (this might be better suited for a full port of SDL to GLES)
* Bulletproof keyboard code (currently depends on raw keyboard mode and can corrupt your terminal if the emulator crashes unexpectedly)
You can grab and compile the sources from here: https://github.com/ToadKing/RetroArch-Rpi
You also will need to download a compile emulator cores for the systems you wish to emulate. To get a list of emulator cores already ported, you can run this script: https://github.com/Themaister/libretro-super (Also note that I've had some issues getting the SNES cores working, so YMMV.)
Feel free to report any bugs you encounter.
I was looking into the Pi as a MAME machine, but put the project on hiatus due to the lack of proper software for my project. But if this works well, I may just have to start the project back up! Now, at least I won't have to worry about the porting of AdvanceMenu.
Some testing with the FBA core shows that it plays some games well (a lot better than ones running in X), but some games have slowdown issues. (CPS1/2, Neo-Geo, etc.) Having ports of specific emulators for those platforms with a focus on performance would be needed to get those games at fullspeed.
Re: RetroArch Emulator Frontend
I looked at iMAME4all for a bit last night and I have a version of it running under libretro now.
https://github.com/ToadKing/imame4all-libretro
It still has some bugs to work out (some games have crackling audio or outright crash) but it already has much better performance than FBA. I hover between fullspeed and nearly fullspeed in Metal Slug on a 800Mhz overclocked Pi. If you compile and run it, try to be careful with crashes, which can render your terminal useless and might force a restart. Try running retroarch like this in the meantime to try to avoid it:
https://github.com/ToadKing/imame4all-libretro
It still has some bugs to work out (some games have crackling audio or outright crash) but it already has much better performance than FBA. I hover between fullspeed and nearly fullspeed in Metal Slug on a 800Mhz overclocked Pi. If you compile and run it, try to be careful with crashes, which can render your terminal useless and might force a restart. Try running retroarch like this in the meantime to try to avoid it:
Code: Select all
retroarch <game> ; kbd_mode -u
-
- Posts: 6
- Joined: Wed May 30, 2012 9:16 am
Re: RetroArch Emulator Frontend
ToadKing: Very cool, this makes you the first person outside of me and Maister who has done a libretro port. So thanks very much for that.
I'll see if I can get this running on PS3/360 as well - and if so, I'll submit a pull request to you.
If there's anything you are missing in the libretro API with regards to how MAME works then just let me and Maister know about it. I can imagine that the lack of full-blown keyboard support would be a problem right now (or are the binds to the RetroPad enough for now?).
I'll see if I can get this running on PS3/360 as well - and if so, I'll submit a pull request to you.
If there's anything you are missing in the libretro API with regards to how MAME works then just let me and Maister know about it. I can imagine that the lack of full-blown keyboard support would be a problem right now (or are the binds to the RetroPad enough for now?).
Re: RetroArch Emulator Frontend
I just mimicked the keybinds from FBA for the most part. Lightgun games may not work right yet but I'm taking it one step at a time.
The only real problem I encountered was getting MAME to run one frame at a time, which it was not really designed for, although this is more of a design choice than any real issues. I ended up hacking it in with a thread that gets paused every frame cycle.
The only real issues I have with the API so far is hacking around MAME to get it to do things outside of the main thread. I'm not sure if I can get savestates running this way, but nearly everything else is fine.
And if you try to compile it for PS3/360, let me warn you that some games just outright crash right now. NBA Jam is one that I know of.
The only real problem I encountered was getting MAME to run one frame at a time, which it was not really designed for, although this is more of a design choice than any real issues. I ended up hacking it in with a thread that gets paused every frame cycle.
The only real issues I have with the API so far is hacking around MAME to get it to do things outside of the main thread. I'm not sure if I can get savestates running this way, but nearly everything else is fine.
And if you try to compile it for PS3/360, let me warn you that some games just outright crash right now. NBA Jam is one that I know of.
Re: RetroArch Emulator Frontend
I just tried it with the imame4all backend and WOW!
It took a LOT of time to compile and I had some problems with the configuration but It was definitely worth it!
It still has some bugs (I cant seem to get any sound) but I had Metal Slug 2 at 50-60 FPS and Street Hoop at fullspeed
Great work Toad I think this is the best mame emu so far
It took a LOT of time to compile and I had some problems with the configuration but It was definitely worth it!
It still has some bugs (I cant seem to get any sound) but I had Metal Slug 2 at 50-60 FPS and Street Hoop at fullspeed

Great work Toad I think this is the best mame emu so far

Re: RetroArch Emulator Frontend
That sounds like my results too, so I'm glad other people can mimick them!alexroc wrote:I just tried it with the imame4all backend and WOW!
It took a LOT of time to compile and I had some problems with the configuration but It was definitely worth it!
It still has some bugs (I cant seem to get any sound) but I had Metal Slug 2 at 50-60 FPS and Street Hoop at fullspeed![]()
Great work Toad I think this is the best mame emu so far
Right now the sound depends on ALSA, and I can't get the snd_bcm2835 module working on my computer, so I hope to get a sound core in OpenMAX IL for it running in the future.
Also, I've noticed a bug in the iMAME4all core: If you hit Escape while on the copyright screen, it will hardlock the emulator, and because the keyboard is stuck in raw mode, the only way to end it is to ssh into your box and kill it that way or power it down. I'll look at getting a fix for it soon.
Re: RetroArch Emulator Frontend
The libretro-super URL is broken. Was it changed or updated or what?
Re: RetroArch Emulator Frontend
Yeah, they changed it. The working link is here: https://github.com/libretro/libretro-supernormal wrote:The libretro-super URL is broken. Was it changed or updated or what?
Re: RetroArch Emulator Frontend
Thanks for the link, you should update your first post with it if youcan. Did you ever get the snes cores working? I can't even get them to compile. This is the buildlog I get:
Code: Select all
=== Building bSNES performance ===
gcc -std=gnu99 -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_PERFORMANCE -fPIC -c libco/libco.c -o obj/libco.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_PERFORMANCE -fPIC -c processor/arm/arm.cpp -o obj/processor-arm.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_PERFORMANCE -fPIC -c processor/gsu/gsu.cpp -o obj/processor-gsu.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_PERFORMANCE -fPIC -c processor/hg51b/hg51b.cpp -o obj/processor-hg51b.o
processor/gsu/gsu.cpp:1: error: bad value (native) for -march= switchprocessor/arm/arm.cpp:1: error: bad value (native) for -march= switch
make: *** [obj/processor-gsu.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [obj/processor-arm.o] Error 1
libco/libco.c:1: error: bad value (native) for -march= switch
processor/hg51b/hg51b.cpp:1: error: bad value (native) for -march= switch
make: *** [obj/processor-hg51b.o] Error 1
make: *** [obj/libco.o] Error 1
Failed to build bSNES performance core
cp: cannot stat `out/libretro.so': No such file or directory
=== Building bSNES compatibility ===
gcc -std=gnu99 -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_COMPATIBILITY -fPIC -c libco/libco.c -o obj/libco.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_COMPATIBILITY -fPIC -c processor/arm/arm.cpp -o obj/processor-arm.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_COMPATIBILITY -fPIC -c processor/gsu/gsu.cpp -o obj/processor-gsu.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_COMPATIBILITY -fPIC -c processor/hg51b/hg51b.cpp -o obj/processor-hg51b.o
libco/libco.c:1: error: bad value (native) for -march= switch
make: *** [obj/libco.o] Error 1
make: *** Waiting for unfinished jobs....
processor/arm/arm.cpp:1: error: bad value (native) for -march= switch
make: *** [obj/processor-arm.o] Error 1
processor/gsu/gsu.cpp:1: error: bad value (native) for -march= switch
make: *** [obj/processor-gsu.o] Error 1
processor/hg51b/hg51b.cpp:1: error: bad value (native) for -march= switch
make: *** [obj/processor-hg51b.o] Error 1
Failed to build bSNES compatibility core
cp: cannot stat `out/libretro.so': No such file or directory
=== Building bSNES accuracy ===
gcc -std=gnu99 -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_ACCURACY -fPIC -c libco/libco.c -o obj/libco.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_ACCURACY -fPIC -c processor/arm/arm.cpp -o obj/processor-arm.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_ACCURACY -fPIC -c processor/gsu/gsu.cpp -o obj/processor-gsu.o
g++ -std=gnu++0x -I. -O3 -fomit-frame-pointer -march=native -DPROFILE_ACCURACY -fPIC -c processor/hg51b/hg51b.cpp -o obj/processor-hg51b.o
libco/libco.c:1: error: bad value (native) for -march= switch
make: *** [obj/libco.o] Error 1
make: *** Waiting for unfinished jobs....
processor/arm/arm.cpp:1: error: bad value (native) for -march= switch
make: *** [obj/processor-arm.o] Error 1
processor/gsu/gsu.cpp:1: error: bad value (native) for -march= switch
make: *** [obj/processor-gsu.o] Error 1
processor/hg51b/hg51b.cpp:1: error: bad value (native) for -march= switch
make: *** [obj/processor-hg51b.o] Error 1
Failed to build bSNES accuracy core
cp: cannot stat `out/libretro.so': No such file or directory
=== Building SNES9x ===
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../apu/apu.o ../apu/apu.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../apu/bapu/dsp/sdsp.o ../apu/bapu/dsp/sdsp.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../apu/bapu/dsp/SPC_DSP.o ../apu/bapu/dsp/SPC_DSP.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../apu/bapu/smp/smp.o ../apu/bapu/smp/smp.cpp
In file included from ../apu/bapu/snes/snes.hpp:30,
from ../apu/bapu/dsp/sdsp.cpp:1:
../apu/bapu/snes/../smp/smp.hpp:61: warning: ISO C++ prohibits anonymous structs
In file included from ../apu/bapu/snes/snes.hpp:30,
from ../apu/bapu/smp/smp.cpp:4:
../apu/bapu/snes/../smp/smp.hpp:61: warning: ISO C++ prohibits anonymous structs
In file included from ../apu/bapu/snes/snes.hpp:30,
from ../apu/apu.cpp:185:
../apu/bapu/snes/../smp/smp.hpp:61: warning: ISO C++ prohibits anonymous structs
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../apu/bapu/smp/smp_state.o ../apu/bapu/smp/smp_state.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../bsx.o ../bsx.cpp
In file included from ../apu/bapu/snes/snes.hpp:30,
from ../apu/bapu/smp/smp_state.cpp:1:
../apu/bapu/snes/../smp/smp.hpp:61: warning: ISO C++ prohibits anonymous structs
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../c4.o ../c4.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../c4emu.o ../c4emu.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../cheats.o ../cheats.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../cheats2.o ../cheats2.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../clip.o ../clip.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../conffile.o ../conffile.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../controls.o ../controls.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../cpu.o ../cpu.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../cpuexec.o ../cpuexec.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../cpuops.o ../cpuops.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../crosshairs.o ../crosshairs.cpp
g++ -I. -I.. -I../apu/ -I../apu/bapu -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -fPIC -DHAVE_STRINGS_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -c -o ../dma.o ../dma.cpp
g++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <file:///usr/share/doc/gcc-4.4/README.Bugs> for instructions.
make: *** [../apu/bapu/smp/smp.o] Error 1
make: *** Waiting for unfinished jobs....
Failed to build SNES9x
cp: cannot stat `libretro.so': No such file or directory
=== Building SNES9x-Next ===
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/apu.o src/apu.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/bsx.o src/bsx.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/c4emu.o src/c4emu.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/cheats.o src/cheats.c
src/apu.c: In function ?€?spc_copier_copy_int?€?:
src/apu.c:1187: warning: dereferencing type-punned pointer will break strict-aliasing rules
src/apu.c:1189: warning: dereferencing type-punned pointer will break strict-aliasing rules
src/c4emu.c: In function ?€?S9xSetC4?€?:
src/c4emu.c:1143: warning: signed and unsigned type in conditional expression
src/c4emu.c:1144: warning: signed and unsigned type in conditional expression
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/controls.o src/controls.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/cpu.o src/cpu.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/cpuexec.o src/cpuexec.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/dsp.o src/dsp.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/fxemu.o src/fxemu.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/globals.o src/globals.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/memmap.o src/memmap.c
src/memmap.c: In function ?€?HeaderRemove?€?:
src/memmap.c:736: warning: value computed is not used
src/memmap.c: In function ?€?checksum_mirror_sum?€?:
src/memmap.c:1455: warning: assignment makes pointer from integer without a cast
src/memmap.c: In function ?€?Map_SA1LoROMMap?€?:
src/memmap.c:1964: warning: comparison between signed and unsigned integer expressions
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/obc1.o src/obc1.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/ppu.o src/ppu.c
gcc -I. -I.. -I../apu/ -O3 -DHAVE_STRINGS_H -DHAVE_STDINT_H -DHAVE_INTTYPES_H -D__LIBRETRO__ -DRIGHTSHIFT_IS_SAR -DINLINE=inline -fomit-frame-pointer -std=gnu99 -Wall -W -Wno-unused-parameter -DNDEBUG=1 -fPIC -c -o src/sa1.o src/sa1.c
gcc: Internal error: Killed (program cc1)
Please submit a full bug report.
See <file:///usr/share/doc/gcc-4.4/README.Bugs> for instructions.
make: *** [src/memmap.o] Error 1
make: *** Waiting for unfinished jobs....
Failed to build SNES9x-Next
cp: cannot stat `libretro.so': No such file or directory
Re: RetroArch Emulator Frontend
Don't even bother with any of the bsnes cores, or any of the b[system] cores for that matter. They will all be too much for the Pi to handle.
That said, I've been running into issues with the Snes9x and Snes9x-Next cores, and they only render a black screen. They may not be fast enough anyway, and we may need to port one of the older, faster versions of Snes9x to get fullspeed.
That said, I've been running into issues with the Snes9x and Snes9x-Next cores, and they only render a black screen. They may not be fast enough anyway, and we may need to port one of the older, faster versions of Snes9x to get fullspeed.
Re: RetroArch Emulator Frontend
I know to forget about using b cores, but I was concerned that even the other snes cores don't build. Also I ran out of memory compiling fba, would increasing the size of swap fix this?
Re: RetroArch Emulator Frontend
Sometimes it can help. What memory split are you using? Don't try to compile anything on the 128/128 memory split.normal wrote:I know to forget about using b cores, but I was concerned that even the other snes cores don't build. Also I ran out of memory compiling fba, would increasing the size of swap fix this?
Re: RetroArch Emulator Frontend
I was on 192/64. I just switched to Raspbian Pisces and it defaults to 224/32 with 256MB swap. I'm recompiling now.
Is there a way to only compile specific cores so I can skip the b cores?
Oh and the wiki says the last step to compile libretro-super is "sh libretro-install.sh <path>". What is the <path> is supposed to be?
Is there a way to only compile specific cores so I can skip the b cores?
Oh and the wiki says the last step to compile libretro-super is "sh libretro-install.sh <path>". What is the <path> is supposed to be?
-
- Posts: 6
- Joined: Wed May 30, 2012 9:16 am
Re: RetroArch Emulator Frontend
Odd. It should be outputting a 15bpp image. It could be that the color format I set by default is what is causing the problem.Toad King wrote: That said, I've been running into issues with the Snes9x and Snes9x-Next cores, and they only render a black screen. They may not be fast enough anyway, and we may need to port one of the older, faster versions of Snes9x to get fullspeed.
Look in port.h -
#define PIXEL_FRMAT RGB555
Create an ifdef there for Raspberry Pi and define it to RGB565 or some other pixel format. You can look at pixform.h to see which other pixel formats you could use.
Also - yes, if a Raspberry Pi can really be compared more or less to a Pentium II 300Mhz PC then you need a very, very old core - 1.52 (and especially post-1.52) will not get you decent speeds - perhaps not even SNES9x 1.43 which they use on Xbox 1/Android. Time to go back to an 2000 SNES9x version and put up with the lower compatibility I guess.
Re: RetroArch Emulator Frontend
So I compiled libretro-super and fba still didn't compile, but snes9x and snes9x-next did. But when I tried compiling Retroarch itself it doesn't work, I just get a bunch of errors I don't remember getting on squeeze.
Code: Select all
In file included from /opt/vc/include/interface/vmcs_host/vc_tvservice.h:30:0,
from /opt/vc/include/bcm_host.h:40,
from retroarch.c:59:
/opt/vc/include/interface/vmcs_host/vc_tvservice_defs.h:141:4: warning: type of bit-field ‘scan_mode’ is a GCC extension [-pedantic]
/opt/vc/include/interface/vmcs_host/vc_tvservice_defs.h:142:4: warning: type of bit-field ‘native’ is a GCC extension [-pedantic]
/opt/vc/include/interface/vmcs_host/vc_tvservice_defs.h:143:4: warning: type of bit-field ‘code’ is a GCC extension [-pedantic]
CC retroarch.c
CC file.c
CC file_path.c
CC hash.c
CC driver.c
CC settings.c
CC dynamic.c
CC message.c
CC rewind.c
CC gfx/gfx_common.c
CC patch.c
CC compat/compat.c
CC screenshot.c
CC audio/utils.c
CC input/linuxraw_input.c
CC autosave.c
CC thread.c
CC conf/config_file.c
CC movie.c
CC audio/oss.c
CC gfx/sdl_gfx.c
CC gfx/context/sdl_ctx.c
CC input/sdl_input.c
CC audio/sdl_audio.c
CC fifo_buffer.c
In file included from /opt/vc/include/interface/vmcs_host/vc_tvservice.h:30:0,
from /opt/vc/include/bcm_host.h:40,
from gfx/rpi.c:4:
/opt/vc/include/interface/vmcs_host/vc_tvservice_defs.h:141:4: warning: type of bit-field ‘scan_mode’ is a GCC extension [-pedantic]
/opt/vc/include/interface/vmcs_host/vc_tvservice_defs.h:142:4: warning: type of bit-field ‘native’ is a GCC extension [-pedantic]
/opt/vc/include/interface/vmcs_host/vc_tvservice_defs.h:143:4: warning: type of bit-field ‘code’ is a GCC extension [-pedantic]
gfx/rpi.c: In function ‘rpi_init’:
gfx/rpi.c:207:16: warning: assignment discards ‘const’ qualifier from pointer target type [enabled by default]
CC gfx/rpi.c
CC gfx/ext_gfx.c
CC audio/ext_audio.c
CC audio/sinc.c
/usr/bin/ld: warning: libvchiq_arm.so, needed by /opt/vc/lib/libOpenVG.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libvcos.so, needed by /opt/vc/lib/libOpenVG.so, not found (try using -rpath or -rpath-link)
/opt/vc/lib/libGLESv2.so: undefined reference to `vcos_log_impl'
/opt/vc/lib/libEGL.so: undefined reference to `vchiu_queue_init'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_msg_queuev'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_thread_at_exit'
/opt/vc/lib/libbcm_host.so: undefined reference to `vcos_init'
/opt/vc/lib/libbcm_host.so: undefined reference to `vcos_dummy_thread_create'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_service_use'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_pthreads_map_errno'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_bulk_queue_transmit'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_named_semaphore_delete'
/opt/vc/lib/libEGL.so: undefined reference to `vchiq_queue_bulk_transmit'
/opt/vc/lib/libbcm_host.so: undefined reference to `_vcos_thread_current_key'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_log_unregister'
/opt/vc/lib/libEGL.so: undefined reference to `vchiq_queue_bulk_receive'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_service_open'
/opt/vc/lib/libOpenVG.so: undefined reference to `vcos_generic_reentrant_mutex_delete'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_msg_dequeue'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_generic_mem_alloc'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_service_close'
/opt/vc/lib/libEGL.so: undefined reference to `vchiq_initialise'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_msg_queue'
/opt/vc/lib/libEGL.so: undefined reference to `vchiq_queue_message'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_log_register'
/opt/vc/lib/libEGL.so: undefined reference to `vchiu_queue_pop'
/opt/vc/lib/libbcm_host.so: undefined reference to `vcos_thread_join'
/opt/vc/lib/libbcm_host.so: undefined reference to `vcos_log_get_default_category'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_connect'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_service_release'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_generic_named_semaphore_create'
/opt/vc/lib/libOpenVG.so: undefined reference to `vcos_generic_reentrant_mutex_create'
/opt/vc/lib/libbcm_host.so: undefined reference to `vcos_thread_create'
/opt/vc/lib/libEGL.so: undefined reference to `vchiq_connect'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_create_connection'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_generic_mem_free'
/opt/vc/lib/libbcm_host.so: undefined reference to `vcos_thread_attr_init'
/opt/vc/lib/libbcm_host.so: undefined reference to `vcos_generic_mem_alloc_aligned'
/opt/vc/lib/libEGL.so: undefined reference to `vcos_snprintf'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_initialise'
/opt/vc/lib/libOpenVG.so: undefined reference to `vcos_generic_reentrant_mutex_unlock'
/opt/vc/lib/libEGL.so: undefined reference to `vchiu_queue_push'
/opt/vc/lib/libbcm_host.so: undefined reference to `vcos_thread_get_name'
/opt/vc/lib/libOpenVG.so: undefined reference to `vcos_generic_reentrant_mutex_lock'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_bulk_queue_receive'
/opt/vc/lib/libbcm_host.so: undefined reference to `single_get_func_table'
/opt/vc/lib/libEGL.so: undefined reference to `vchiq_release_message'
/opt/vc/lib/libbcm_host.so: undefined reference to `vchi_mphi_message_driver_func_table'
/opt/vc/lib/libEGL.so: undefined reference to `vchiq_open_service'
collect2: ld returned 1 exit status
make: *** [retroarch] Error 1
Re: RetroArch Emulator Frontend
Actuall I fixed that by following this post:
Now when I run retroarch i just get "failed to open vchiq instance"
lanlafi wrote:This adds the libraries in /opt/vc/lib so the system finds them.Davespice wrote:I take it this will fix the hello_pi problems I reported above?lanlafi wrote:add /opt/vc/lib into ld.so.conf.d, please.
Can you point me to where this file is located... I tried to use find -name to locate it without success.
Thanks in advance!
(commands as root)
cd /etc/ld.so.conf.d/
echo /opt/vc/lib >broadcomlib.conf
ldconfig
Now when I run retroarch i just get "failed to open vchiq instance"
Re: RetroArch Emulator Frontend
Wouldn't that return a bad color format to RetroArch, thus corrupting the colors? Anyway, I don't think that is the issue, because I've messed with the render path, and it's getting video frames; they're just all black. It still runs (at about 30 FPS) so it's rendering something.Squarepusher wrote:Odd. It should be outputting a 15bpp image. It could be that the color format I set by default is what is causing the problem.Toad King wrote: That said, I've been running into issues with the Snes9x and Snes9x-Next cores, and they only render a black screen. They may not be fast enough anyway, and we may need to port one of the older, faster versions of Snes9x to get fullspeed.
Look in port.h -
#define PIXEL_FRMAT RGB555
Create an ifdef there for Raspberry Pi and define it to RGB565 or some other pixel format. You can look at pixform.h to see which other pixel formats you could use.
Also - yes, if a Raspberry Pi can really be compared more or less to a Pentium II 300Mhz PC then you need a very, very old core - 1.52 (and especially post-1.52) will not get you decent speeds - perhaps not even SNES9x 1.43 which they use on Xbox 1/Android. Time to go back to an 2000 SNES9x version and put up with the lower compatibility I guess.
Are you still on the 224/32 memory split? That can't do fullscreen 3D rendering on HD displays. You have to be on at least 192/64.normal wrote:Now when I run retroarch i just get "failed to open vchiq instance"
Re: RetroArch Emulator Frontend
Yeah I forgot to do that. I also read that I need to do "sudo chmod a+rw /dev/vchiq" for some reason on Raspbian to get displays and it runs now, except when I load a NES rom I only get a square grey screen with some random color pixels around. And it freezes, I need to SSH to reboot. Maybe Raspbian Piscese is just missing drivers or packages or whatever for it to work? I think something like that since i need to manualyl set permission for a driver just to get a 3D render.
Re: RetroArch Emulator Frontend
Yeah, that sounds like some bugs in your setup. Try adding the user you're running as to the "video" group, that might help with some of the permissions issues you're having.normal wrote:Yeah I forgot to do that. I also read that I need to do "sudo chmod a+rw /dev/vchiq" for some reason on Raspbian to get displays and it runs now, except when I load a NES rom I only get a square grey screen with some random color pixels around. And it freezes, I need to SSH to reboot. Maybe Raspbian Piscese is just missing drivers or packages or whatever for it to work? I think something like that since i need to manualyl set permission for a driver just to get a 3D render.
Also, which FCEU core are you using? I was able to run FCEU-mm just fine.
Re: RetroArch Emulator Frontend
I was using the fceu core that libsuper builds. But when I updated the firmware on squeeze now I get this error:
So it looks like no matter what I do to teh firmware it breaks retroarch! I even tried recompilign retroach and I get so many errors I can't read any of them. Is the firmware or the retroarch broken?
Code: Select all
1457200810: vchiq_lib: Very incompatible VCHIQ library - cannot retrieve driver version
* failed to open vchiq instance
Re: RetroArch Emulator Frontend
Looks like your firmware update was incomplete. Did you update the libraries along with the firmware/kernel? If you aren't already, I recommend using Hexxeh's rpi-update tool.normal wrote:I was using the fceu core that libsuper builds. But when I updated the firmware on squeeze now I get this error:
So it looks like no matter what I do to teh firmware it breaks retroarch! I even tried recompilign retroach and I get so many errors I can't read any of them. Is the firmware or the retroarch broken?Code: Select all
1457200810: vchiq_lib: Very incompatible VCHIQ library - cannot retrieve driver version * failed to open vchiq instance
-
- Posts: 39
- Joined: Tue Jun 05, 2012 3:00 am
Re: RetroArch Emulator Frontend
sudo chmod a+rw /dev/vchiqnormal wrote:I was using the fceu core that libsuper builds. But when I updated the firmware on squeeze now I get this error:
So it looks like no matter what I do to teh firmware it breaks retroarch! I even tried recompilign retroach and I get so many errors I can't read any of them. Is the firmware or the retroarch broken?Code: Select all
1457200810: vchiq_lib: Very incompatible VCHIQ library - cannot retrieve driver version * failed to open vchiq instance
Re: RetroArch Emulator Frontend
I did this and it still doesn't go. I read that updating firmware even without updating kernel causes havoc related to a single file libvchiq_arm.so and no one has fixed it yet. I have to reflash yet again to get it working.ratherDashing wrote:sudo chmod a+rw /dev/vchiqnormal wrote:I was using the fceu core that libsuper builds. But when I updated the firmware on squeeze now I get this error:
So it looks like no matter what I do to teh firmware it breaks retroarch! I even tried recompilign retroach and I get so many errors I can't read any of them. Is the firmware or the retroarch broken?Code: Select all
1457200810: vchiq_lib: Very incompatible VCHIQ library - cannot retrieve driver version * failed to open vchiq instance