Monday 13 June 2011

Let's do this!

Welcome!  This blog is to chronicle my efforts in bringing MAME (Multiple Arcade Machine Emulator) to the Android OS, and maybe encourage others to join the cause.

No MAME app for Android??

Currently, nothing I could find.  However, some limited alternatives have appeared.


What about TigerArcade(MAME)?

Whereas MAME emulates over a thousand gaming boards, TigerArcade only emulates CPS1,CPS2, and Neogeo game boards, and definitely nothing from the classic 80s era.  But kudos to the creator(s)!  3 boards is better than none.  It's also free, so give it a try.


What about Jrioni Arcade (or Jarcade)?

Though this app appears in the Market, when I try to purchase it, I get a server error.  The homepage blog has not been updated since 2009, so this project is (at the very least) on hiatus.  There also seems to have be the matter of having to convert roms to a certain set.  No idea why, but whatever works, right?  Other problems reported in the reviews.


What about Android Arcade Emulator?

Not currently available on the market.  At any rate, it didn't emulate many more game boards than TigerArcade(MAME), and maybe less.


Nothing else?

Well, there was another project called JAPE.  While not an Android app, it is written in Java, which is the programming language most apps for Android use.  If it supported any games, it may be worth compiling it for Android.  But after 5 years without an update, this project is probably abandoned.


So the only two options that are left to the wouldbe Android MAME players is to wait, or create the app themselves.  After some investigation, I'm confident that the major components needed to do the latter are available, and there is access to all the tools needed to create the rest.


So what needs to be done?

Mame is written in C++ mainly for Window/DOS based systems, but reportedly the current version of the source code has an SDL capability for compiling on non-windows based systems.  For instance, I've compiled an SDL version of MAME on my Debian notebook.  Android apps are written in java, but can have embedded native C code by using the Android NDK.

From SDL wiki:


Simple DirectMedia Layer for Android

Requirements:

Android SDK
http://developer.android.com/sdk/index.html

Android NDK r4 or later
http://developer.android.com/sdk/ndk/index.html

How the port works

- Android applications are Java-based, optionally with parts written in C
- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to
the SDL library
- This means that your application C code must be placed inside an android
Java project, along with some C support code that communicates with Java
- This eventually produces a standard Android .apk package.

So the since main project needs to be written in Java, I think the first task is to create the menu skeleton of what will be the frontend / GUI to MAME.  I can worry about plugging in the C++ code later.  If it works, when MAME gets updated, the new code can be used to compile a new Android app version, without porting everything to Java each time.

To create the menu skeleton, I've installed Eclipse, the Android SDK, the Java Runtime Environment, plus all other addons and available packages (just be thorough).  This is my very first project however, so before I can start coding, I'm learning the system and currently going through the tutorials.  So far, I've created the obligatory "Hello World" program, with lots left to learn.  I'm optimistic though, and should have a basic menu soon.

Of course, if this is something you can do easily and want to help, please let me know!

No comments:

Post a Comment