The past couple of days I've been working on this port of OsmOse, an object-oriented Sega Master System and Game Gear emulator by Vedder Bruno. It is based on version 0.8.1, the last version by the author to use SDL, but I did a bunch of backports, fixes and changes to make it compile and run well on the Pi with as many features as possible. On my 700 MHz Pi, it runs really well and consumes about 30%-60% CPU.
This is made for the framebuffer, so no promises regarding whether or not it will work in X. If you want full screen without slow software scaling, you will likely need to put suitable modes (320x240, for instance) in /etc/fb.modes. There are some scaling filters built in but they are slow.
Get it now!
What I did to it in this first version:
- Fixed missing standard C library includes
- Removed PrecisionTimer (which contained x86 assembly) and backported some of the main emulation loop from 0.9.0b instead
- Added support for configurable joystick buttons through the -joy1, -joy2 and -joystart buttons. You must still explicitely turn on joystick support with -joy, too.
- Backported SN76489 fixes from 0.8.2
- Backported TextWriter speed optimizations from 0.8.5b
- Also, the command line fix for arbitrary placement of filename from 0.8.5b
- Disabled FPS counter since it is not compatible with the newer frame rendering code
- Disabled version display on boot for more seamless integration with emulator front-ends
- Changed sound output rate from 22050 Hz to 44100 by rendering two sound frames every frame instead of one. Running the emulator at 22050 Hz causes sound desync. Probably a problem in the ALSA driver.
- Doubled sound buffer size for potential better performance
- Added Raspberry Pi-specific optimizations to Makefile
The archive above includes sources and a binary. The binary should be good to go, just run it. To compile the source, just type make (you'll need libsdl-dev).
Here's how I run it in order to turn on joystick support and define some buttons:
- Code: Select all
./osmose -joy -joy1 2 -joy2 4 -joystart 11 filename.gg
You can run osmose without any arguments to see all the available switches.