Working on a libretro port

Hello everybody,

my name is Christian and i’m a student( of embedded systems design) from austria.

First of all, thank you for your great project - i loved the rpg maker 2000 games back in the days.

I recently forked your codebase to create a libretro (http://www.libretro.com/) port of the easyRPG player for my personal use (or for yours if you wan’t it).

In the process i made some additions to the audio files:
[ul][li]added support for libsndfile to enable .wav playback without using sdl_mixer (http://www.mega-nerd.com/libsndfile/)[/li][li]added support for libsamplerate to make arbitrary pitch changes possible without using sdl_mixer (http://www.mega-nerd.com/SRC/)[/li][/ul]

I also plan to port the bitmap class from pixman to opengl (but haven’t started yet).

So what’s my point ? :wink:
I’m here in the forum to ask if this additions would be useful for your project?
(I never worked with github before and i wasn’t able to figure out if just creating a pull request is considered rude ;))

Github-Repo: https://github.com/ChristianBreitwieser/easyrpg-libretro/tree/libretro_port

PS: At the moment the repo is lacking proper libretro makefiles because i’m still in the process of figuring out how they are meant to be written.
(my personal testbuild is currently a statically linked msvc .dll)

Hallo Chris,

that’s really cool.
Libsndfile Support would be really useful because the 3ds homebrew port also doesn’t depend on SDL.
And a different resampler is on our ToDo list, too, because the one from SDL is a bit broken (doesn’t work for non-power of 2 changes).

It’s also good to see libsamplerate being an optional dependency because it is GPL licensed and we are currently talking about adding linking exceptions to our GPL license to be more compatible with Commercial games (linking with Steamworks & co. is GPL incompatible).

I suggest that you cherry-pick your libsndfile and libsamplerate commits in an extra (libretro independend) branch and open a PR. Then we could review this part in the next days.

I’m not really seeing a reason for the OpenGL Support for Bitmap. Pixman appears to be fast enough on all platforms but if you think it is worth it feel free to provide a OpenGL Version. Please don’t use legacy OpenGL, would be good when it is compatible with OpenGL ES :slight_smile:
For this I suggest creating two versions of the Bitmap class: PixmanBitmap and OpenGlBitmap and then just switch in the Bitmap::Create functions.
From looking at your code it appears you know what you are doing so good luck :smiley:

You can also talk to us on IRC: #easyrpg @ freenode

Hallo Ghabry,

If the license of libsamplerate is a problem, i could change the code to also support the speex resampler (part of opus tools) (which is not under gpl license - BSD to my knowledge https://github.com/gcp/opus-tools/blob/master/src/resample.c) before opening a pull request.

Thanks Chris, about the libsamplerate replacement it could use the speex resampler as a proposal to be compatible with linking exceptions (BSD):

github.com/EasyRPG/Player/issues/895

opus-tools resampler is not provided as a library, but it is the same resampler, so it is not needed to copy the source when using libspeexdsp.

It’s actually the same code :smiley:

Edited: Damn , to slow :wink: Yes then it will be libspeexdsp. Thanks :smiley:

Hello ChrisBreiti,

I’m a member of the libretro team and author of the ZX Spectrum, ZX81 and Game & Watch cores.

I took notice of the EasyRPG project a few days ago and it’s so awesome I immediately wanted a libretro port. I know the player already runs on many platforms, but libretro has some additional ones (such as the Gamegirl, iOS, and the Xbox 360 and PS3 consoles), and also because it would be awesome to have it available in Lakka boxes.

So I was talking about the port at #retroarch @ freenode today and someone told me about your port. The reason I’m contacting you via this forum is to say that there is interest from the libretro community in you port, and that you’re more than welcome to participate in the #libretro channel if you have trouble with it. I’d also like to say that not all platforms supported by RetroArch have OpenGL, so if you could leave the current Pixman implementation as a compile-time option it would be awesome.

Thank you for working on this, and thanks to the EasyRPG developers for making it and providing it for free as an open source project.

Cheers,

Andre

Hello Andre,

Wow - incredible :wink: Same time, same idea :smiley:

Thanks for your invitation. I will do so when i have questions regarding the api.

Regarding OpenGL i’ve decided to go with the current pixman implementation - as the implementation works perfectly fine on a raspberry pi 2 , which is my main target at the moment.

In the coming two weeks i have some exams at university , but after that i’ll provide makefiles in the libretro style , and continue the work on the port.

Thanks a lot,
Christian

Yepp when porting to the Nintendo 3DS our software renderer was improved to be much faster. Therefore it should run fine on anything with 300+ Mhz :smiley: (depending on the graphical effects in the game)