The state of SNES emulation on Raspberry Pi

Some weeks ago I started tweaking basically all Snes9x forks around, questioning the possibility to run decent SNES emulation on Raspberry PI.

First, I went for the pure approach, porting the current Snes9x git master (1.53) to Raspberry Pi, that was however barely usable. byuu's new sound core is very precise but makes it slow (this has become riddle for me, right now).
As second attempt I merged the spc700 sound core from a snes9x-0.40 version (by notaz, ported to Symbian); this was effectively the pre-byuu sound core, and the backport was bloody. As a result, it didn't work: a few samples were being produced resulting in no sound at all.

On my third attempt I looked at the current Pandora port, snes9x-1.39ff, and that worked better; after some hard work it could successfully run. I added native OpenGL ES display support (already added to previous attempt) and then started tinkering with the input code. I stopped after finding a weird bug with the new keyboard input (game input freeze, possibly unrelated to my additions). Ideally I would have added native keyboard and joystick support.

Nowadays there's to say that I've lost most interest on working on this project, thus I've released my patched work as-is, and going on to my next challenge. :)

With this project I was slowly restarting with C/C++ and hacking around; this work, although not completely successful, has taken quite some effort! In the end I will listen to the advice of Toad King, that basically we don't have the numbers to make this work.

I don't want to set a trend of many interrupted projects, but eventually I will sit on something that I like :P


My first RaspberryPi release

I have been tinkering a lot with Snes9x codebase and I was able to successfully use the hardware-accelerated display. Cool :)

In this process I've read many OpenGL ES tutorials and also seen some 2D examples about how to render on Raspberry PI, thus I wanted to properly format my achievements into a static library for multiple reasons: to help other newbies, to have it in good shape for my next Raspberry Pi 2D projects, and to sharpen my long-forgotten C++ skills :)

The library is C++ (with some C), not really packaged for portability but you should be able to use it with little efforts. There are some nice&interesting features, like:
  • support for hardware-provided scaling
  • tileset loading from PNG and index-based tile selection for drawing
  • render-to-texture (this is what you will use to port other software to Raspberry PI)
I am also using render-to-texture on the snes9x-rpi port (not yet released), thus I will mantain this library at least for some time.

Any feedback welcome! Enjoy


RaspberryPi ideas

I have been playing/tweaking/hacking with my RaspberryPi for some months now. The device has indeed some use; its limited power is a good constraint to keep focused on good programming practices and embedded systems development, that is one area of expertize that I loved in the past and still fosters my curiosity.

Some projects that I would like to complete as a hobby are:

I will document the progress and of course properly publish the projects in a genuine open-source way.

Hello world!

A few words about myself: I could be considered a software developer on steroids, with a large interest area that I continuously feed by reading and learning (that's how I gained interest in IT). For the purposes of this blog I will not use my personal identity, I will talk about software development and other related tales.
8bit mario kart by killdoser666

After about a decade I finally convinced myself that blogging is not so bad - after all. Talk about stubborness.. ;)

It has actually been a combination of different factors pulling me back from using the blogging medium so far; first of all, I saw its very beginning and I was not convinced about the professionality or inherent value of blogs. I was probably struck by some very bad personal diaries back then. I made up my mind that there were better ways to present projects, persons, news etc. but I have changed this idea now.

It is clearly possible to use blogs in the right way (TM), and I am here to start practicing. So please be critic, I want your feedback!