This is a test release of RetroArch for the GCW0. I decided to post it in the Development forum, because it's not ready for a public release yet, and so I hope other devs can build the sources and improve the port or share their comments.
Updates:
02-06-2016
- I have uploaded a new version of the opk. The most relevant changes are that the xmb menu has been updated, it is wroth to give it a try! Unfortunately the ribbon shader effect is not working on the zero.
Since this is a nightly build, it may contain several bugs. So if you would like to contribute, please report those to the official libretro team.
- Another relevant change, is that I enabled the auto-frameskip feature of the catsfc core. When it is enabled most snes games will be playable.
27-05-2016
- A couple of months ago the gcw0 port changes were officially added to retroarch's repo, but it needs some minor changes to build successfully.
Please download the following patch if you want to build the latest version of retroarch: https://www.dropbox.com/s/69qc8mwrvi1sjcu/gcw0_build_fixes%20%2827052016%29.patch?dl=0.
- This is a work in progress core based on Nebuleon tempgba port: https://www.dropbox.com/s/jy2gx1d259azv3t/libretro-tempgba-unofficial.7z?dl=0.
I re-ported the tempgba core, since the existing gpsp core doesn't work with dynarec enabled. Unfortunately this core
will only work with the static version of RetroArch.
Changelog:
v0.1b
- Set xmb menu as default menu driver. It is really nice, you should check it out.
- Bundled some cores, but the ones other users have uploaded should work too.
- Added a frameskip option to catsfc core.
- ...
v0.1
- Built using CFLAGS = -O2 -ffast-math -march=mips32 -mtune=mips32r2 -mhard-float.
- Bundled assets and core files into OPK.
- Set glui as default menu driver.
- Set alsathread as default audio driver.
- Mapped Select button correctly. You can exit RetroArch from menu.
- Enabled Menu toggle with Down + L1 + R1 + Y combo.
- Bundled some additional cores.
To test retroarch on the zero:
1) Download the following files:
RetroArch.opk, and
retroarch_gcw0.zip or
retroarch_gcw0_lite.zip. Or download one of the following:
RetroArch_v0.1.opk,
RetroArch_v0.1b.opk and skip to step 4.
2) Install RetroArch.opk on your zero. Copy it to /media/data/apps or use the
GCW Zero Manager to install it.
3) On the zero, create a folder called .config in /usr/local/home/. Then extract retroarch_gcw0.zip or retroarch_gcw0_lite.zip contents and copy them there. Those archives contain the retroarch.cfg file, cores, and other optional files like assets, cheats, shaders, etc.
4) Run RetroArch from gmenu. You should see the RGUI menu screen where you can select a core, load a game, etc.
And for those interested in compiling RetroArch, these are the steps to build it from sources:
1) Download the following patches file:
libretro_gcw0_patches.zip, and extract it somewhere on your PC.
2) Clone the git repo:
git clone --depth 1 git://github.com/libretro/RetroArch.git
3) Enter the cloned sources directory and copy the opendingux_egl_driver_v0.1.patch file there.
cd RetroArch
4) Then, to apply the patch:
git apply opendingux_egl_driver_v0.1.patch
5) Before configuring the sources, we need to setup some cross-compilation variables:
export PATH=$PATH:/opt/gcw0-toolchain/usr/bin:/opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/bin
export PKG_CONF_PATH=/opt/gcw0-toolchain/usr/bin/pkg-config
export PKG_CONFIG_PATH=/opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/lib/pkgconfig
export PKG_CONFIG_SYSROOT_DIR=/opt/gcw0-toolchain/usr/mipsel-gcw0-linux-uclibc/sysroot
export PKG_CONFIG_LIBDIR=/opt/gcw0-toolchain/usr/mipsel-gcw0-linux/uclibc/sysroot/usr/lib/pkgconfig
Additionally you can export CFLAGS variable to define custom optimization flags, for example:
export CFLAGS="-O2 -march=mips32 -mtune=mips32r2"
6) Now type the following to configure the sources:
./configure --global-config-dir=/mnt/RetroArch --host=mipsel-gcw0-linux-uclibc --prefix=/tmp --enable-gles --disable-kms --enable-opendingux_fbdev --enable-alsa --with-gles_libs="-lGLESv2 -lEGL"
The --global-config-dir option is used to tell RetroArch to look for retroarch.cfg in the opk mount point. That way we can bundle assets and core files into the opk.
There are other options you can use with configure, but I let pkg-config choose the necessary packages. Look for qb/qb.params.sh in RetroArch sources for more options.
7) Finally, to compile RetroArch:
make V=1
If everything goes well, there should be a retroarch executable in the same folder.
8 ) Additionally you can build video and audio software filters. They are located in RetroArch/audio/audio_filters and RetroArch/gfx/video_filters. Enter one of those folders and type:
make compiler=/opt/gcw0-toolchain/usr/bin/mipsel-linux-gcc extra_flags="-O2 -ffast-math -march=mips32 -mtune=mips32r2 -mhard-float"
Some .so files will be generated. Copy the .so, .filt and .dsp files somewhere on the sdcard, and load them from RetroArch settings menu.
Now we need a core to test the frontend, so let's build picodrive:
1) Clone the repo:
git clone https://github.com/libretro/picodrive.git
2) Then enter the directory and copy the picodrive_libretro_gcw0.patch file there.
cd picodrive
3) Now, build the sources:
make -f Makefile.libretro platform=gcw0
Again, if there is no error, there should be a working picodrive_libretro.so file in picodrive folder.
Copy those files somewhere on your sdcard, and you can run retroarch from telnet with the following command:
./retroarch -L picodrive_libretro.so "Castlevania - Bloodlines (USA).zip"
If you would like to test another core, just go to
https://github.com/libretro, and clone it's sources.
Then, you need to add some gcw0 platform changes to the Makefile. Look for GCW0 on the patched picodrive/Makefile.libretro file to use it as example.