Emumaster for SailfishOS, Work-in-progress

I noticed that I did not publish a post about some porting work I did for Emumaster since quite some time. In this post, I provide mostly pointers to further resources such as source code repository, build repository, and forum thread.

To be clear: I am not the original author of Emumaster. To the best of my knowledge, Emumaster for Nokia N9 was first announced by the user “elemental” in the following thread at talk.maemo.org: http://talk.maemo.org/showthread.php?t=81136 The Emumaster announcement also links to a Wiki page, which, unfortunately, does not seem to exist anymore: https://bitbucket.org/elemental/emumaster/wiki

All credits etc. go to the original author. My contribution is only some very minor work on porting Emumaster to SailfishOS and my attempt to provide recent builds that can be used with updated SailfishOS versions.

For those who never came across Emumaster yet: Emumaster is an emulator that enables running software for, e.g., NES, SNES, PSX, or Amiga, on supported platforms. Currently, the only supported platform for the Emumaster build announced here is SailfishOS.

Below is a list of the most important resources regarding the Emumaster SailfishOS version:

One important limitation is that Emumaster requires armv7hl. Thus, it is likely not to work on armv7l devices, such as the Jolla C community device. Interestingly, on a quick try, the PSX emulator still worked on the Jolla C. For a bit more information about that have a look at the forum thread linked above.

Why was the port needed? Below, I summarize some of the aspects that had to be addressed to make and keep Emumaster working on SailfishOS:

  • Originally, Emumaster was released for Nokia N9, which ran Harmattan and used Qt4. As SailfishOS uses Qt5, some adjustments had to be made to make Emumaster working on SailfishOS. In addition, there were some first performance aspects that had to be addressed.
  • At some time, some dependencies were updated along with SailfishOS, which required a re-build to keep Emumaster working. If I recall correctly, the major culprit was the update of gstreamer from 0.10 to 1.0.
  • For meaningfully running Emumaster on higher resolution devices some hard-coded limits regarding scaling of controls had to be increased.
  • Plus, there were some further minor workarounds to improve Emumaster on SailfishOS, e.g., fix audio problems via a small hack.

The changes mentioned above are in the stable branch of my source code repository. However, even though, I called the branch “stable”, please be aware that there are still many missing and incomplete bits regarding the Emumaster SailfishOS version.

The master branch contains some more work-in-progress changes such as:

  • Attempts for improving the performance. At some time, in scope of a SailfishOS update, I noticed some performance degradation and tried to improve this by changing the way the frames generated by the emulator are drawn. See also the forum thread linked above for some more elaboration on this.
  • Port the drawing of controls from some C/C++ implementation to QML.
  • Enable running Emumaster on Android.

However, all these things are even more work-in-progress than what can be found on the stable branch. So, please proceed with caution and do not expect that things will work easily.

Unfortunately, due my pretty limited time, I cannot put much effort into updating this. Still, I hope that this is useful for some of you. If you have constructive feedback or comments, please let me know.

This entry was posted in Announcements and tagged , , . Bookmark the permalink.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.