Updated. Removed Quit, don't need it anymore. Fixed a couple of crashes(68000/SCSP games are still slow as molasses but they dont cause crashes anymore) Everything else is the same, I'm working on options, credits and I'll do a source release pretty soon.

I've finally gotten to set up my sdcard properly and try this out and I'm having a similar problem - no matter what game I pick, the app puts a play icon in the notify bar and then force quits. I've tried, among others, Marble Madness, Haunted Castle, Daytona, Journey, Tron, and a couple of Genesis games.

This is on an HTC EVO 4G running Gingerbread 2.3.3 (HTC/Sprint's official OTA update, no CM or rooting or anything).

I just pushed an update that should have rom loading acting a lot better. This fixes the above zerowing issue and adds basic error handling to rom loading including a toast to tell you why it failed instead of crashing horribly

Edit:oh and I'm working on the options screen. at least then I can get it so it doesn't require stuff to live in /sdcard/m1 since this is an issue for some people.

No prob. 1.23 had the romlist issue. 1.24 should have that fixed. I know I'm running it and at least one other person that isn't having that problem anymore. I forgot I had the rompath hard coded so I fixed that but I didn't notice that m1 appends a ; to the end of it when it reads the ini so 1.23 had that issue because it wasn't finding the roms at all. I fixed that and pushed 1.24 this morning to fix it. Though it was mentioned to me that the romlist may not update properly if the service never dies(which it doesn't sometimes, I dunno why) You might want to try force quitting or going in to menu|settings|applications and kill it from there.

It should be ok as long as your ini points at your rom folder. If you dont have an ini it doesn't init at all anymore, keeps stuff from getting weird. FYI you can also filter for "I/M1Android" since I spew a few debugging messages.

This android shit is a pain If you're ever looking over the source, try not to laugh because its such a horrible hack

FYI, i was on 1.24 when i took the above logcat. right now i looked at my ini file and saw that i apparently changed the rompath from /sdcard/m1/roms to simply roms expecting it to be read as a relative path, but after changing it back m1 now takes forever to action, and STILL NO ROMS show up in the list.

and now as i type my moto droid running cyanogenmod7 just went into soft-reboot. fantastic.

is running on my moto droid OCed to 800mhz simply a non-starter?

in the meantime, deadbeef player on android is satisfying my zerowing craving via genesis vgm

I was thinking about buying a Hero H2000 (froyo 2.2, 416 mhz) and I wonder if there are any chances of M1 getting DRC for the 68000? I know atm mame has no backend for ARM, but since even Windows 8 will support said architecture, I suppose it is being considered (albeit I know this might be filed under "when helll freezes over" :S ).

MAME will likely have an ARM DRC backend in the future (assuming it's possible for consumers to load arbitrary apps onto ARM Windows 8 machines). There are no plans for M1 to have one at this time though.

Neko, I've run into a bit of a problem with M1 Android and am wondering if you've seen the behaviour yourself.

What I'll do is I'll open a ROM and I'll listen to a song. If I press stop for any reason, I cannot resume playing that song, nor can I play any other song from that ROM or any other ROM until I completely close M1 and reopen it (and wait for its "Initializing..." popup to go away each time).

I like to listen to some of the old chiptunes from my childhood days at the arcade when I'm driving (beats the living crap out of what's on the radio nowadays), but I can't very well close out the app (requires me to enter my task manager since the app has no "close app" button anywhere), and look at the screen to reopen the ROM(s) and select my song while driving.

If you have any workarounds for this issue, I'll be happy to try them out.

- Squishy Tia!

Feature Request (when/if it ever becomes feasible): When selecting a song, the player would change to a screen similar to how WinAmp Android works and would allow playback controls at the bottom and swiping left/right to switch songs within a ROM. That would make it a lot easier to switch songs without having to look at a really small list display on the screen.

Edit:

I'm not sure if anybody still has issues with getting this set up, but here's how I did it:

When the app is first installed and asks you to use a long touch on the directory you wish to install it, you generally want to select the "/sdcard/" directory by holding down your finger on its list entry until M1 begins its initialization.

Once that's done, any ROMs you have on the phone already can be copied or moved into the "/sdcard/m1/roms/" directory using your phone's built in filesystem manager (on my phone it's the My Files app).

Once you have your ROMs in that directory (which is the default for m1) they will be visible to M1. To open a specific ROM, you press your menu key on the phone and select Open, then pick your ROM from the list that appears and you're golden (except for the issue above). Once opened the list of songs will appear on your phone screen.

It also seems that there are issues opening new ROMs if certain actions are taken beforehand. For instance, if I press pause to temporarily stop a song, and then try to open a new ROM, I am greeted with the same behaviour as if I had pressed the Stop button (i.e. the ROM will open but not play any sound). CPU usage will remain at 95-97% after this until I force quit M1. In order to open a new ROM to listen to its music without having to quit M1 and relaunch it, I have to let the current ROM continue playing while I select the new ROM.

This is generally considered a bad thing to do as it's always caused issues on the dektop version of M1, usually in the form of garbled music or "off" notes. Audio Overload suffers from this too when dealing with .smc/.rsn files. That being the case, I've trained myself to always stop, or at least pause the current song in play before closing a ROM and switching to a new one. Basically I do a "graceful" stop whenever I can, but in M1 Android, doing so kills the ability to further listen to any songs at all without quitting and relaunching.

So right now, at least on an Epic 4G running Gingerbread, M1 is useful for mainly one ROM at a time listening unless you remember to open a new ROM without stopping the previous one. I can deal with that, but I thought you should know what behaviour is occuring here.

I put the info and feedback here instead of on the Android Market** reviews page because I didn't want anybody to shy away from using the app on the chance that they might not have the same issues (all phones are different, which can be a real PITA for programmers trying to make apps that work on all versions of Android out there).

I've not had the 'stop' issue but it doesn't surprise me, stop is poorly implemented . It isn't necessary to use it and its probably better to use pause if you need to halt playback for any reason. You shouldn't ever hear stuck or bad notes when switching games since I'm stopping all playback before loading the next set. I'll fix these issues in the next version, whenever that is Thanks for your feedback and thanks for not writing a bad review on the market and failing to contact me or leaving me with no way to contact you, I hate that crap

[edit]Oh, and there's no such thing as "close app" on android. You can finish() an app but android will still "close" it when it gets around to it, if ever. Anyone who tells you otherwise is wrong and any app that implements "close app" doesn't understand the application lifecycle

M1, at least the OS X version, has no "stop" button, so maybe it'd be best just to remove the stop button and have only the pause button there instead. It'd certainly avoid tech support issues like mine in the future.

All versions of M1 have issues with stuck or bad notes, mostly if switching between two ROMs using one of the more CPU intensive hardware sets being emulated (F3 for example, which is notorious for not liking a song being played when opening those ROMs).

The issue of being paused using the Pause button and not being able to open a new ROM and listen to it is a weird one though. I typically will pause a song so I can get in my head a few of the notes of the song I might want to listen to, which in turn helps me remember its name.

One thing I would like to put in as a request, if you can get it in a future version: Please make the ROMs list a bit bigger onscreen. The text (and thus finger "clicking" width) is really, really tiny, making the single line entries a royal PITA to select.

Oh, and while I remember (since I forget really easy these days), whenever I leave a ROM playing and want to switch to a new ROM, I have to select (click) it twice in the list before M1 switches to it. I could click it once and wait forever and nothing will happen, but the moment I click it a second time it finally switches.

I wish I could code worth a damn - then I'd be useful for something other than a bug report or the like. I can easily design a workable UI via storyboard pics, but coding it...beyond my abilities right now. I used to go "fix it fix it FIX IT ALREADY", and then I wised up and finally saw some articles on just what emulation entails and I was like "wow, if I'd known this stuff before I'd have been more along the lines of asking what to do to work within the limits and less being an asshat just barking at the authors".

As for Richter's mention for DroidSound....that app is making me go completely NUTS. It absolutely, positively, cannot handle large ROM sets. I have all of the SNES ROMs publicly released (both english and japanese), from A to Z and even segmented into half the alphabet for each respective region, DroidSound chokes and crashes (auto-quits) less than four seconds into the indexing process. I can't select the default indexing option as it doesn't find the ROMs (mostly because they were named before proper >31 character+extension filename systems were implemented, thus lack a visible .smc or .spc in their names. I have to choose Full for the indexing and it makes DS choke.

I have an idea what the pause issue is, it should be easy enough to fix. There are major (MAJOR) changes to the game list coming. I've also been considering a re-write to support native audio on honeycomb and newer devices(ics, etc). Should improve performance quite a bit and I can add a visualizer or something with the lower overhead...

I haven't worked on it in a while but I've been working on a multi-chip player also. Currently supports VGM, SPC, HES, NSF, GSF, PSF, PSF2 and I think that's it for now...

I did find out that DroidSound does not recognize .rsn files. And since the software on the phone will not let me rename them to .spc from .rsn I get to delete them, batch rename (oh THAT will be fun) on OS X, and copy them back via bluetooth (again). The happy fun 100k/sec max bluetooth even when it's literally six inches from the computer.

What I wouldn't give for the ability to use WinAmp plugins in the Droid version. Then you wouldn't have to port any of the normal console formats - there's players for that on the PC.

You mentioned native audio on honeycomb and later (3.x/4.x) - the vast majority of phones use Froyo or Gingerbread (I can't see really supporting Froyo - it's just super unoptimized). Mine's updated to Gingerbread. I'd go ICS, but Samsung's refusing to even bother with an ICS update for the Galaxy S line because they say their TouchWiz software makes ICS too slow. Funny how the Nexus S, with almost identical hardware can run ICS beautifully, but the Galaxy S line can't due to software that Samsung stubbornly refuses to back down from.

neko: for multi-chip you could do much worse than to port Modizer from iOS - it's got ARM-optimized versions of the SSF/DSF engines from Audio Overload, and some very cool visualizers. Source is available at the bottom of this page.

@Tias My experience with ICS on the Galaxy S is that it's really memory starved and Android kills and restarts apps all the time. It's annoying as a daily driver. My installed stats on market are showing Gingerbread totally destroying Froyo for market share now. I show less than 1% installed with ICS but that's not really important. Gingerbread(I dunno why I said honeycomb added the native audio stuff iirc.

@Belmont It's funny that you mention that, I was actually considering doing that. Modizer is worth its weight in gold IMO. I'd really like to replace his MXDRV code with the stuff Gorry put out for Android fairly recently. I don't know where yoyofr got that code but I've never seen it before. It's horrible and MXDRV/x68000 is my specialty

ICS shouldn't have too many problems running on the Epic 4G in and of itself. It's the bloatware the companies put on the phones that eats up the RAM.

Epic 4G specs:

Card slot microSD, up to 32GBInternal 512 MB RAM, 512 MB ROM

That should easily accomodate ICS. Again, it's the bloat that both the manufacturer and carrier put onto the phone, which in most cases cannot be uninstalled (Really Sprint, I absolutely must have Asphalt 5, even though I never play it??)

I have a suggestion for you. Since you'll likely get rid of the stop button (keep pause), and replace stop with Restart like M1 on OS X has. So it'd have, in order: < P ^ >, where < and > are prev/next like normal, P is pause, and ^ is the restart button. I actually make use of restart fairly often (it's a quirk I have, but it can also reset a song that's gone "off" due to switching too quickly, which happens a lot on the F3 based ROMs).

Of course, the swipe left/right for song changing would be ideal since that means you don't have to look at the phone to change songs.

Edit: Oh, and whoever runs the place - the date for each post is in bright red on a lavender background. I can't read it unless I highlight it like I would text in a word doc. It's really hard on the eyes.

Well, in the end I downloaded ADT and NDK and built it myself. Works pretty well with the exception of the stop button that sends it to hell. My wife likes it, too.

Yeah, hitting Stop prevents it from loading any further songs and hangs the app. Pause should work OK, just not stop. This occurs both on my Epic 4G (being switched out for a Note 2 today, YAY!) as well as my Transformer Prime TF-201 running ICS 4.1.1.

It will eventually get fixed I'm sure, and so too will the very narrow list names (hard to finger press those on smaller phones).

My only real quip right now is that on some games, notably P-47, the songs will not loop infinitely like I want them to. They appear to have their list lengths forced even though I disabled the Use List Length for Songs option.

There's a "default length" option in the settings. It's set to five minutes by default.

I set it to ten minutes, and when that didn't work for P-47, ten hours. It still dies at exactly 2:06 each time (two minutes, six seconds). Since it's the only ROM I'm having issues with right now, at least that I know of, I'm going to just assume it's a corrupt ROM and try to find a more recent version of it.

I just bought a Galaxy Note II to replace my old Galaxy S and got inspired to do some work. Sorry its been so long

Default time/list time is broken. I think the flags for setting things like normalize between songs is too. I think I fixed the language switch not updating the list thing ages ago but I don't remember ~_~ The Stop button is also a known issue. I'm going to replace it with something else, probably re-trigger.

First on the list of projects is the game browser. That thing sucks, eh? I figured I'd fix the size of the rows, add some relevant fields, sorting, favorites. Other suggestions specifically for the game browser?

There will be some other small improvements and fixes, such as a new icon. Maybe some surprises.

Actually, yes. In addition to the control buttons on the songlist page, a swipe to go to next subtune would be awesome. I'm thinking in the vein of WinAmp, where I can switch songs effortlessly while I'm driving without taking my eyes off the road. An easily visible yet not too intrusive Loop/Sequence button would probably help a lot of people as well, but it isn't mandatory since it is at least an option in the preferences.

I'm sure you've noticed that whenever M1 is launched it takes ages to load up even with only a handful of ROMs - would you know why this is? Me personally, I'm using a SanDisk Ultra Class 10 64 GB SD Card formatted in exFAT for proper symlink capability, but FAT32 formatted was slow as well.

One thing that might speed things up for you is if you can make the app use one thread for the UI and another for an extra CPU core. Obviously this will only be something you can enable in preferences on a multi-core CPU equipped phone, but for the likes of the Galaxy S III and Note 2, that could give you significant headroom, especially when changing songs on more CPU intensive system emulations.

What might help your browser is not only larger fonts/row sizes, but also a proper folder viewing mode, as well as the ability for M1 to automatically check for an "m1" folder on all SD cards, since phones like the Note 2 and GS3 have an internal "SD" card, usually at /mnt/storage/sdcard0/ and an actual physical slot SD card location at /mnt/storage/extSdCard/. This scanning ability might make initial "installation" on a factory wiped phone (or a new phone) a bit more user friendly. But at least you have the option to choose manually, unlike with DroidSound, which only sees the internal SD Card storage built into the phone.

As for the stop button fix, that's essentially how M1 works on OS X, so I see no problems with that. When I'm driving, if the swipe feature is put in, I can just quickly swipe back/forth to get the song to start over again like I do in WinAmp, since I can't use buttons while I'm driving.

When you first install M1 on Android, it asks you to select your installation directory. When the filesystem navigation window opens, select the root directory of your SD card (if present), or the root directory of your phone's internal memory (if no SD card is present or available).

To select the directory, long press on it.

The directory you normally want to use (in case you have to wipe your phone) is /mnt/extsdCard/ , /ext/sdcard/ , or /mnt/sdcard/

If you are using the phone's internal memory, one of these would be the typical mount point:

Now that you have the install path selected, you should see a folder called m1. Inside that folder there should be a roms folder. Any games you want to listen to must be inside the roms folder. So if you want to listen to Contra, you need contra.zip inside there.

There is no .ini file to deal with. In the M1 interface, you press your Menu button on the phone/tablet and selec the Open option. You will be presented with a list of ROMs you have in the "roms" folder I mentioned above. You can press on any one of them to start playing it.

Note: As of Android 4.0 and later, some songs do not play properly even if you specifically uncheck "Use List Song Length". This is a known issue.

Also, do not ever press the Stop button. It will cause M1 to hang on all versions of Android. It will be removed and replaced with a "restart song" button in the future according to neko68k.

M1 can adapt to pretty much any MAME romset from the last several years. I'm not familiar with exactly which ROMs Mame4All wants; it's based on MAME 0.36 from the year 2000 (remember when that sounded futuristic?) with some various hacks. I hope it doesn't actually use ROMs from 0.36 though ;-)

Heres an up-to-date apk. I lost my key like a year ago so you might have to uninstall the version you have before you install this. This isn't really any different than the Google Play version except 1) it has an icon now, thanks to NFG 2) it targets 4.2.2 and might look a little different now but should still run on older phones.

Will you be replacing the Stop button with a Restart Song button like the desktop M1 versions have? Since Stop just crashes the app, and Restart Song has a useful purpose at least, it'd make a good replacement button.

Cool. As long as it restarts the song, that's awesome. Any chance of getting a WinAmp-esque ability to swipe between songs? This is purely a feature question since this would make the app usable while driving.

I've thought about it. I'm not entirely sure what I'm going to do with the main UI in general going forward. The layout is an awful mess and it may just get a redesign anyway. Lots of things have changed in Android since I wrote it and there are constructs now that are much more flexible than what I used.

It'll be interesting to see what you're able to come up with. No rush on it though - this isn't a life or death necessity. I know what not to do with the current versions, so as long as I avoid that (pressing Stop for any reason), I generally don't have any issues outside of the occasional ROM that cuts off before my designated song length setting even when lists are ignored (P-47 is one of those).

I'm just happy to even have an arcade music player I can take with me. Listening to Dragon Spirit puts me in a good mood no matter what most of the time.

\o/ Media keys, for instance on my bluetooth keyboard, and lock screen controls on many devices working now. Volume ducking is causing some crashes and the 'time' display is in a race condition that also causes crashes.

Neko, does this latest update resolve the issue from the 2013 version where songs would cut off even if the "use list length" option was disabled? That's about the only real problem I ever had with M1 Android.

P.S. - I hate KitKat's SD card write limitations. Makes my apps a pain to work with. Hopefully Android 5.0 will make life easier for all of us (including you).